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);
+ }
+
}