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