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 2007/03/15 06:07:05 UTC

svn commit: r518485 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/platform: hsqldb/HsqlDbBuilder.java mysql/MySqlBuilder.java

Author: tomdz
Date: Wed Mar 14 22:07:05 2007
New Revision: 518485

URL: http://svn.apache.org/viewvc?view=rev&rev=518485
Log:
Fixed Hsqldb/MySql sql builders

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java?view=diff&rev=518485&r1=518484&r2=518485
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java Wed Mar 14 22:07:05 2007
@@ -81,6 +81,18 @@
                                                 Map      parameters,
                                                 List     changes) throws IOException
     {
+        // HsqlDb can only drop columns that are not part of a primary key
+        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)
+        {
+            TableChange change = (TableChange)changeIt.next();
+
+            if ((change instanceof RemoveColumnChange) && 
+                ((RemoveColumnChange)change).getColumn().isPrimaryKey())
+            {
+                return;
+            }
+        }
+
         // in order to utilize the ALTER TABLE ADD COLUMN BEFORE statement
         // we have to apply the add column changes in the correct order
         // thus we first gather all add column changes and then execute them
@@ -114,12 +126,8 @@
             {
                 RemoveColumnChange removeColumnChange = (RemoveColumnChange)change;
 
-                // HsqlDb can only drop columns that are not part of a primary key
-                if (!removeColumnChange.getColumn().isPrimaryKey())
-                {
-                    processChange(currentModel, desiredModel, removeColumnChange);
-                    changeIt.remove();
-                }
+                processChange(currentModel, desiredModel, removeColumnChange);
+                changeIt.remove();
             }
         }
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java?view=diff&rev=518485&r1=518484&r2=518485
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java Wed Mar 14 22:07:05 2007
@@ -183,6 +183,16 @@
 
             if (change instanceof AddColumnChange)
             {
+                AddColumnChange addColumnChange = (AddColumnChange)change;
+
+                if (addColumnChange.getNewColumn().isRequired() &&
+                    (addColumnChange.getNewColumn().getDefaultValue() == null) &&
+                    !addColumnChange.getNewColumn().isAutoIncrement())
+                {
+                    // we're enforcing a full rebuild in case of the addition of a required
+                    // column without a default value that is not autoincrement
+                    return;
+                }
                 addColumnChanges.add(change);
                 changeIt.remove();
             }