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