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


Reply via email to