Author: tomdz
Date: Wed Mar 14 23:57:13 2007
New Revision: 518498

URL: http://svn.apache.org/viewvc?view=rev&rev=518498
Log:
Final fix for DDLUTILS-159

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

Modified: 
db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
URL: 
http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java?view=diff&rev=518498&r1=518497&r2=518498
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java 
(original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java Wed 
Mar 14 23:57:13 2007
@@ -911,7 +911,30 @@
         Table sourceTable = currentModel.findTable(tableName, 
getPlatform().isDelimitedIdentifierModeOn());
         Table targetTable = desiredModel.findTable(tableName, 
getPlatform().isDelimitedIdentifierModeOn());
 
-        processTableStructureChanges(currentModel, desiredModel, sourceTable, 
targetTable, parameters, changes);
+        // we're enforcing a full rebuild in case of the addition of a required
+        // column without a default value that is not autoincrement
+        boolean requiresFullRebuild = false;
+
+        for (Iterator changeIt = changes.iterator(); !requiresFullRebuild && 
changeIt.hasNext();)
+        {
+            TableChange change = (TableChange)changeIt.next();
+
+            if (change instanceof AddColumnChange)
+            {
+                AddColumnChange addColumnChange = (AddColumnChange)change;
+
+                if (addColumnChange.getNewColumn().isRequired() &&
+                    (addColumnChange.getNewColumn().getDefaultValue() == null) 
&&
+                    !addColumnChange.getNewColumn().isAutoIncrement())
+                {
+                    requiresFullRebuild = true;
+                }
+            }
+        }
+        if (!requiresFullRebuild)
+        {
+            processTableStructureChanges(currentModel, desiredModel, 
sourceTable, targetTable, parameters, changes);
+        }
 
         if (!changes.isEmpty())
         {

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=518498&r1=518497&r2=518498
==============================================================================
--- 
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 23:57:13 2007
@@ -183,17 +183,7 @@
 
             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);
+                addColumnChanges.add((AddColumnChange)change);
                 changeIt.remove();
             }
         }


Reply via email to