You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2008/11/05 21:32:32 UTC

svn commit: r711688 - in /db/ddlutils/trunk/src: main/java/org/apache/ddlutils/platform/hsqldb/ test/java/org/apache/ddlutils/io/

Author: tomdz
Date: Wed Nov  5 12:32:28 2008
New Revision: 711688

URL: http://svn.apache.org/viewvc?rev=711688&view=rev
Log:
Fixed bug in HsqlDb platform; unit test tweaks

Modified:
    db/ddlutils/trunk/src/main/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java
    db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAddColumn.java
    db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAlteration.java
    db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestInsertColumn.java

Modified: db/ddlutils/trunk/src/main/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/main/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java?rev=711688&r1=711687&r2=711688&view=diff
==============================================================================
--- db/ddlutils/trunk/src/main/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java (original)
+++ db/ddlutils/trunk/src/main/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java Wed Nov  5 12:32:28 2008
@@ -26,6 +26,7 @@
 import org.apache.ddlutils.model.Column;
 import org.apache.ddlutils.model.ModelException;
 import org.apache.ddlutils.model.Table;
+import org.apache.ddlutils.model.TypeMap;
 import org.apache.ddlutils.platform.SqlBuilder;
 
 /**
@@ -155,11 +156,30 @@
         if (ColumnDefinitionChange.isTypeChanged(getPlatformInfo(), sourceColumn, targetColumn) ||
             ColumnDefinitionChange.isSizeChanged(getPlatformInfo(), sourceColumn, targetColumn))
         {
+            boolean needSubstr = TypeMap.isTextType(targetColumn.getTypeCode()) && (targetColumn.getSize() != null);
+
+            if (needSubstr)
+            {
+                print("SUBSTR(");
+            }
             print("CAST(");
             printIdentifier(getColumnName(sourceColumn));
             print(" AS ");
-            print(getSqlType(targetColumn));
+            if (needSubstr)
+            {
+                print(getNativeType(targetColumn));
+            }
+            else
+            {
+                print(getSqlType(targetColumn));
+            }
             print(")");
+            if (needSubstr)
+            {
+                print(",1,");
+                print(targetColumn.getSize());
+                print(")");
+            }
         }
         else {
             super.writeCastExpression(sourceColumn, targetColumn);

Modified: db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAddColumn.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAddColumn.java?rev=711688&r1=711687&r2=711688&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAddColumn.java (original)
+++ db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAddColumn.java Wed Nov  5 12:32:28 2008
@@ -27,7 +27,6 @@
 import org.apache.commons.beanutils.DynaBean;
 import org.apache.ddlutils.TestAgainstLiveDatabaseBase;
 import org.apache.ddlutils.platform.firebird.FirebirdPlatform;
-import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;
 import org.apache.ddlutils.platform.interbase.InterbasePlatform;
 import org.apache.ddlutils.platform.mckoi.MckoiPlatform;
 import org.apache.ddlutils.platform.mysql.MySql50Platform;
@@ -508,10 +507,6 @@
         {
             assertEquals(new BigDecimal(1), beans.get(0), "pk");
         }
-        else if (HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
-        {
-            assertEquals(new Integer(0), beans.get(0), "pk");
-        }
         else
         {
             assertEquals(new Integer(1), beans.get(0), "pk");

Modified: db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAlteration.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAlteration.java?rev=711688&r1=711687&r2=711688&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAlteration.java (original)
+++ db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestAlteration.java Wed Nov  5 12:32:28 2008
@@ -181,7 +181,8 @@
      */
     public void testChangeColumnOrderWithAutoIncrementColumn()
     {
-        if (!getPlatformInfo().isNonPrimaryKeyIdentityColumnsSupported())
+        if (!getPlatformInfo().isNonPrimaryKeyIdentityColumnsSupported() ||
+            !getPlatformInfo().isMultipleIdentityColumnsSupported())
         {
             return;
         }

Modified: db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestInsertColumn.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestInsertColumn.java?rev=711688&r1=711687&r2=711688&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestInsertColumn.java (original)
+++ db/ddlutils/trunk/src/test/java/org/apache/ddlutils/io/TestInsertColumn.java Wed Nov  5 12:32:28 2008
@@ -26,6 +26,7 @@
 
 import org.apache.commons.beanutils.DynaBean;
 import org.apache.ddlutils.TestAgainstLiveDatabaseBase;
+import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;
 import org.apache.ddlutils.platform.mysql.MySql50Platform;
 import org.apache.ddlutils.platform.mysql.MySqlPlatform;
 import org.apache.ddlutils.platform.sybase.SybasePlatform;
@@ -331,9 +332,10 @@
         Object avalue = ((DynaBean)beans.get(0)).get("avalue");
 
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+            // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", avalue);
         }
         else
@@ -484,6 +486,11 @@
      */
     public void testAddAndInsertPKAndMultipleColumns()
     {
+        if (!getPlatformInfo().isMixingIdentityAndNormalPrimaryKeyColumnsSupported())
+        {
+            return;
+        }
+
         final String model1Xml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<database xmlns='" + DatabaseIO.DDLUTILS_NAMESPACE + "' name='roundtriptest'>\n"+
@@ -893,9 +900,10 @@
         Object avalue = ((DynaBean)beans.get(0)).get("avalue");
 
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+            // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", avalue);
         }
         else
@@ -1178,9 +1186,10 @@
         Object avalue = ((DynaBean)beans.get(0)).get("avalue");
 
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+                // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", avalue);
         }
         else
@@ -1503,9 +1512,10 @@
 
         assertEquals(new Integer(2),  beans.get(0), "avalue1");
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+            // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", avalue2);
         }
         else
@@ -1834,9 +1844,10 @@
 
         assertEquals(new Integer(2), beans.get(0), "avalue1");
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+                // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", avalue2);
         }
         else
@@ -2185,9 +2196,10 @@
 
         assertEquals(new Integer(1), beans2.get(0), "pk");
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+                // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", pk1);
             assertEquals("text", avalue);
         }
@@ -2759,9 +2771,10 @@
         assertEquals(new Integer(2), beans2.get(0), "pk");
         assertEquals(new Integer(1), beans2.get(0), "avalue1");
         if (MySqlPlatform.DATABASENAME.equals(getPlatform().getName()) ||
-            MySql50Platform.DATABASENAME.equals(getPlatform().getName()))
+            MySql50Platform.DATABASENAME.equals(getPlatform().getName()) ||
+            HsqlDbPlatform.DATABASENAME.equals(getPlatform().getName()))
         {
-            // MySql ignores that the type is CHAR(8) and trims the value
+                // Some DBs ignore that the type is CHAR(8) and trim the value
             assertEquals("text", pk2);
             assertEquals("text", avalue2);
         }