You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by to...@apache.org on 2009/06/10 14:13:56 UTC

svn commit: r783312 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/

Author: torehalset
Date: Wed Jun 10 12:13:55 2009
New Revision: 783312

URL: http://svn.apache.org/viewvc?rev=783312&view=rev
Log:
CAY-1116 add generated PK support to SQLite
 * added support for generated pk inspired by patch from Scott Anderson

Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=783312&r1=783311&r2=783312&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Wed Jun 10 12:13:55 2009
@@ -14,6 +14,7 @@
 
 Changes/New Features Since M6:
 
+CAY-1116 Add generated PK support to SQLite
 CAY-1225 Controlling JDBC Driver setting "fetchSize" in a SelectQuery
 CAY-1236 Allow providing custom INSERT, UPDATE, DELETE query builders
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java?rev=783312&r1=783311&r2=783312&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcPkGenerator.java Wed Jun 10 12:13:55 2009
@@ -196,6 +196,7 @@
             con.close();
         }
 
+        QueryLogger.logQueryError(new RuntimeException("AUTO_PK_SUPPORT exist: " + Boolean.valueOf(exists)));
         return exists;
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java?rev=783312&r1=783311&r2=783312&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/sqlite/SQLiteAdapter.java Wed Jun 10 12:13:55 2009
@@ -35,6 +35,12 @@
  * A SQLite database adapter that works with Zentus JDBC driver. See
  * http://www.zentus.com/sqlitejdbc/ for the driver information.
  * 
+ * <pre>
+ *      sqlite.cayenne.adapter = org.apache.cayenne.dba.sqlite.SQLiteAdapter
+ *      sqlite.jdbc.url = jdbc:sqlite:sqlitetest.db
+ *      sqlite.jdbc.driver = org.sqlite.JDBC
+ * </pre>
+ * 
  * @since 3.0
  */
 // check http://cwiki.apache.org/CAY/sqliteadapter.html for current limitations.
@@ -43,7 +49,7 @@
     public SQLiteAdapter() {
         setSupportsFkConstraints(false);
         this.setSupportsUniqueConstraints(false);
-        this.setSupportsGeneratedKeys(false);
+        this.setSupportsGeneratedKeys(true);
     }
 
     @Override
@@ -76,4 +82,33 @@
         return query.createSQLAction(new SQLiteActionBuilder(this, node
                 .getEntityResolver()));
     }
+
+    /**
+     * Appends AUTOINCREMENT clause to the column definition for generated columns.
+     */
+    @Override
+    public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) {
+        super.createTableAppendColumn(sqlBuffer, column);
+        DbEntity entity = (DbEntity) column.getEntity();
+        if (column.isGenerated()
+                && column.isPrimaryKey()
+                && entity.getPrimaryKeys().size() == 1) {
+            sqlBuffer.append(" PRIMARY KEY AUTOINCREMENT");
+        }
+    }
+
+    @Override
+    protected void createTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity) {
+
+        // do not append " PRIMARY KEY () " for single column generated primary key
+        if (entity.getPrimaryKeys().size() == 1) {
+            DbAttribute column = entity.getPrimaryKeys().iterator().next();
+            if (column.isGenerated()) {
+                return;
+            }
+        }
+
+        super.createTableAppendPKClause(sqlBuffer, entity);
+    }
+
 }