You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2010/09/16 21:37:20 UTC
svn commit: r997889 -
/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
Author: mikedd
Date: Thu Sep 16 19:37:20 2010
New Revision: 997889
URL: http://svn.apache.org/viewvc?rev=997889&view=rev
Log:
OPENJPA-1800: prevent duplicate column in SybaseDictionary.getCreateTableSQL()
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java?rev=997889&r1=997888&r2=997889&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/SybaseDictionary.java Thu Sep 16 19:37:20 2010
@@ -66,7 +66,7 @@ public class SybaseDictionary
(SybaseDictionary.class);
private static Constructor<SybaseConnection> sybaseConnectionImpl;
-
+
static {
try {
sybaseConnectionImpl = ConcreteClassGenerator.getConcreteConstructor(SybaseConnection.class,
@@ -163,6 +163,8 @@ public class SybaseDictionary
supportsNullUpdateAction = false;
supportsDefaultUpdateAction = false;
supportsCascadeUpdateAction = false;
+
+ trimsTrailingWhitespace = true; // whitespace is removed from varchars
}
@Override
@@ -204,12 +206,24 @@ public class SybaseDictionary
append(" (");
Column[] cols = table.getColumns();
+
boolean hasIdentity = false;
for (int i = 0; i < cols.length; i++) {
- if (cols[i].isAutoAssigned())
+ // can only have one identity column
+ if (cols[i].isAutoAssigned()) {
hasIdentity = true;
+ }
+ // The column may exist if dropping and recreating a table.
+ if(cols[i].getIdentifier().getName().equals(identityColumnName)) {
+ hasIdentity=true;
+ // column type may be lost when recreating - reset to NUMERIC
+ if(cols[i].getType() != Types.NUMERIC) { // should check if compatible
+ cols[i].setType(Types.NUMERIC);
+ }
+ }
+
buf.append(i == 0 ? "" : ", ");
buf.append(getDeclareColumnSQL(cols[i], false));
}