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


Reply via email to