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 07:57:13 UTC
svn commit: r518498 - in
/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform: SqlBuilder.java
mysql/MySqlBuilder.java
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();
}
}