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 2006/05/25 23:48:08 UTC

svn commit: r409480 - in /db/ddlutils/trunk/src: java/org/apache/ddlutils/alteration/ java/org/apache/ddlutils/platform/ java/org/apache/ddlutils/platform/db2/ java/org/apache/ddlutils/platform/derby/ java/org/apache/ddlutils/platform/firebird/ java/or...

Author: tomdz
Date: Thu May 25 14:48:07 2006
New Revision: 409480

URL: http://svn.apache.org/viewvc?rev=409480&view=rev
Log:
Fixed/enhanced Firebird platform
Added two more tests for the alteration of auto-increment columns

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddColumnChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddForeignKeyChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddIndexChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddPrimaryKeyChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddTableChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnAutoIncrementChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDataTypeChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDefaultValueChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnRequiredChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnSizeChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ModelChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/PrimaryKeyChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveColumnChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveForeignKeyChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveIndexChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemovePrimaryKeyChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveTableChange.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2Builder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/derby/DerbyBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdPlatform.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/hsqldb/HsqlDbBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sapdb/SapDbBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddColumnChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddColumnChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddColumnChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddColumnChange.java Thu May 25 14:48:07 2006
@@ -108,7 +108,7 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
         Column newColumn = null;
 
@@ -121,7 +121,7 @@
             throw new DdlUtilsException(ex);
         }
 
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         if ((_previousColumn != null) && (_nextColumn != null))
         {

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddForeignKeyChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddForeignKeyChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddForeignKeyChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddForeignKeyChange.java Thu May 25 14:48:07 2006
@@ -58,14 +58,14 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
         ForeignKey newFK = null;
 
         try
         {
             newFK = (ForeignKey)_newForeignKey.clone();
-            newFK.setForeignTable(database.findTable(_newForeignKey.getForeignTableName()));
+            newFK.setForeignTable(database.findTable(_newForeignKey.getForeignTableName(), caseSensitive));
         }
         catch (CloneNotSupportedException ex)
         {

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddIndexChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddIndexChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddIndexChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddIndexChange.java Thu May 25 14:48:07 2006
@@ -56,7 +56,7 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
         Index newIndex = null;
 
@@ -68,6 +68,6 @@
         {
             throw new DdlUtilsException(ex);
         }
-        database.findTable(getChangedTable().getName()).addIndex(newIndex);
+        database.findTable(getChangedTable().getName(), caseSensitive).addIndex(newIndex);
     }
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddPrimaryKeyChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddPrimaryKeyChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddPrimaryKeyChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddPrimaryKeyChange.java Thu May 25 14:48:07 2006
@@ -55,13 +55,13 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         for (int idx = 0; idx < _primaryKeyColumns.length; idx++)
         {
-            Column column = table.findColumn(_primaryKeyColumns[idx].getName());
+            Column column = table.findColumn(_primaryKeyColumns[idx].getName(), caseSensitive);
 
             column.setPrimaryKey(true);
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddTableChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddTableChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddTableChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/AddTableChange.java Thu May 25 14:48:07 2006
@@ -56,7 +56,7 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
         try
         {

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnAutoIncrementChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnAutoIncrementChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnAutoIncrementChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnAutoIncrementChange.java Thu May 25 14:48:07 2006
@@ -56,10 +56,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         column.setAutoIncrement(!_column.isAutoIncrement());
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDataTypeChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDataTypeChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDataTypeChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDataTypeChange.java Thu May 25 14:48:07 2006
@@ -69,10 +69,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         column.setTypeCode(_newTypeCode);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDefaultValueChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDefaultValueChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDefaultValueChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnDefaultValueChange.java Thu May 25 14:48:07 2006
@@ -69,10 +69,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         column.setDefaultValue(_newDefaultValue);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnOrderChange.java Thu May 25 14:48:07 2006
@@ -60,9 +60,9 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table     table      = database.findTable(getChangedTable().getName());
+        Table     table      = database.findTable(getChangedTable().getName(), caseSensitive);
         ArrayList newColumns = new ArrayList(table.getColumnCount());
 
         for (int idx = 0; idx < table.getColumnCount(); idx++)

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnRequiredChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnRequiredChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnRequiredChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnRequiredChange.java Thu May 25 14:48:07 2006
@@ -56,10 +56,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         column.setRequired(!_column.isRequired());
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnSizeChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnSizeChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnSizeChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ColumnSizeChange.java Thu May 25 14:48:07 2006
@@ -83,10 +83,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         column.setSizeAndScale(_newSize, _newScale);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ModelChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ModelChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ModelChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/ModelChange.java Thu May 25 14:48:07 2006
@@ -28,7 +28,8 @@
     /**
      * Applies this change to the given database.
      * 
-     * @param database The database
+     * @param database      The database
+     * @param caseSensitive Whether the case of names matters
      */
-    public void apply(Database database);
+    public void apply(Database database, boolean caseSensitive);
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/PrimaryKeyChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/PrimaryKeyChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/PrimaryKeyChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/PrimaryKeyChange.java Thu May 25 14:48:07 2006
@@ -69,19 +69,19 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         for (int idx = 0; idx < _oldPrimaryKeyColumns.length; idx++)
         {
-            Column column = table.findColumn(_oldPrimaryKeyColumns[idx].getName());
+            Column column = table.findColumn(_oldPrimaryKeyColumns[idx].getName(), caseSensitive);
 
             column.setPrimaryKey(false);
         }
         for (int idx = 0; idx < _newPrimaryKeyColumns.length; idx++)
         {
-            Column column = table.findColumn(_newPrimaryKeyColumns[idx].getName());
+            Column column = table.findColumn(_newPrimaryKeyColumns[idx].getName(), caseSensitive);
 
             column.setPrimaryKey(true);
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveColumnChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveColumnChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveColumnChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveColumnChange.java Thu May 25 14:48:07 2006
@@ -55,10 +55,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table  table  = database.findTable(getChangedTable().getName());
-        Column column = table.findColumn(_column.getName());
+        Table  table  = database.findTable(getChangedTable().getName(), caseSensitive);
+        Column column = table.findColumn(_column.getName(), caseSensitive);
 
         table.removeColumn(column);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveForeignKeyChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveForeignKeyChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveForeignKeyChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveForeignKeyChange.java Thu May 25 14:48:07 2006
@@ -57,9 +57,9 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         table.removeForeignKey(_foreignKey);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveIndexChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveIndexChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveIndexChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveIndexChange.java Thu May 25 14:48:07 2006
@@ -55,10 +55,10 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
-        Index index = table.findIndex(_index.getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
+        Index index = table.findIndex(_index.getName(), caseSensitive);
 
         table.removeIndex(index);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemovePrimaryKeyChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemovePrimaryKeyChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemovePrimaryKeyChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemovePrimaryKeyChange.java Thu May 25 14:48:07 2006
@@ -55,13 +55,13 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         for (int idx = 0; idx < _primaryKeyColumns.length; idx++)
         {
-            Column column = table.findColumn(_primaryKeyColumns[idx].getName());
+            Column column = table.findColumn(_primaryKeyColumns[idx].getName(), caseSensitive);
 
             column.setPrimaryKey(false);
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveTableChange.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveTableChange.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveTableChange.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/alteration/RemoveTableChange.java Thu May 25 14:48:07 2006
@@ -39,9 +39,9 @@
     /**
      * {@inheritDoc}
      */
-    public void apply(Database database)
+    public void apply(Database database, boolean caseSensitive)
     {
-        Table table = database.findTable(getChangedTable().getName());
+        Table table = database.findTable(getChangedTable().getName(), caseSensitive);
 
         database.removeTable(table);
     }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/PlatformImplBase.java Thu May 25 14:48:07 2006
@@ -1151,8 +1151,11 @@
 
                 for (int idx = 0; idx < autoIncrColumns.length; idx++)
                 {
-                    Object value = lastInsertedIds.getObject(autoIncrColumns[idx].getName());
-    
+                    // we're using the index rather than the name because we cannot know how
+                    // the SQL statement looks like; rather we assume that we get the values
+                    // back in the same order as the auto increment columns
+                    Object value = lastInsertedIds.getObject(idx + 1);
+
                     PropertyUtils.setProperty(dynaBean, autoIncrColumns[idx].getName(), value);
                 }
             }

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?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/SqlBuilder.java Thu May 25 14:48:07 2006
@@ -856,7 +856,7 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changes.clear();
             }
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2Builder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2Builder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2Builder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/db2/Db2Builder.java Thu May 25 14:48:07 2006
@@ -145,7 +145,7 @@
                 if (addColumnChange.getNextColumn() == null)
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
@@ -158,19 +158,19 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (PrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/derby/DerbyBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/derby/DerbyBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/derby/DerbyBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/derby/DerbyBuilder.java Thu May 25 14:48:07 2006
@@ -135,7 +135,7 @@
                 if (addColumnChange.isAtEnd())
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdBuilder.java Thu May 25 14:48:07 2006
@@ -24,9 +24,8 @@
 
 import org.apache.ddlutils.Platform;
 import org.apache.ddlutils.alteration.AddColumnChange;
-import org.apache.ddlutils.alteration.PrimaryKeyChange;
+import org.apache.ddlutils.alteration.AddPrimaryKeyChange;
 import org.apache.ddlutils.alteration.RemoveColumnChange;
-import org.apache.ddlutils.alteration.RemovePrimaryKeyChange;
 import org.apache.ddlutils.alteration.TableChange;
 import org.apache.ddlutils.model.Column;
 import org.apache.ddlutils.model.Database;
@@ -44,9 +43,6 @@
  */
 public class FirebirdBuilder extends SqlBuilder
 {
-    /** Denotes the string used via SET TERM for delimiting commands that need to be executed in one go. */
-    public static final String TERM_COMMAND = "--TERM--";
-
     /**
      * Creates a new builder instance.
      * 
@@ -70,61 +66,80 @@
 
         for (int idx = 0; idx < columns.length; idx++)
         {
-            print("CREATE GENERATOR ");
-            printIdentifier(getGeneratorName(table, columns[idx]));
-            printEndOfStatement();
-            print(TERM_COMMAND);
-            printEndOfStatement();
-            print("CREATE TRIGGER ");
-            printIdentifier(getConstraintName("trg", table, columns[idx].getName(), null));
-            print(" FOR ");
-            printlnIdentifier(getTableName(table));
-            println("ACTIVE BEFORE INSERT POSITION 0 AS");
-            println("BEGIN");
-            print("IF (NEW.");
-            printIdentifier(getColumnName(columns[idx]));
-            println(" IS NULL) THEN");
-            print("NEW.");
-            printIdentifier(getColumnName(columns[idx]));
-            print(" = GEN_ID(");
-            printIdentifier(getGeneratorName(table, columns[idx]));
-            println(", 1);");
-            println("END;");
-            print(TERM_COMMAND);
-            printEndOfStatement();
+            writeAutoIncrementCreateStmts(database, table, columns[idx]);
         }
     }
 
     /**
-     * Determines the name of the generator for an auto-increment column.
-     * 
-     * @param table  The table
-     * @param column The auto-increment column
-     * @return The generator name
-     */
-    protected String getGeneratorName(Table table, Column column)
-    {
-    	return getConstraintName("gen", table, column.getName(), null);
-    }
-    
-    /**
      * {@inheritDoc}
      */
     public void dropTable(Table table) throws IOException
     {
-        super.dropTable(table);
         // dropping generators for auto-increment
         Column[] columns = table.getAutoIncrementColumns();
 
         for (int idx = 0; idx < columns.length; idx++)
         {
-            print("DROP TRIGGER ");
-            printIdentifier(getConstraintName("trg", table, columns[idx].getName(), null));
-            printEndOfStatement();
-            print("DROP GENERATOR ");
-            printIdentifier(getGeneratorName(table, columns[idx]));
-            printEndOfStatement();
+            writeAutoIncrementDropStmts(table, columns[idx]);
         }
+        super.dropTable(table);
+    }
+
+    /**
+     * Writes the creation statements to make the given column an auto-increment column.
+     * 
+     * @param database The database model
+     * @param table    The table
+     * @param column   The column to make auto-increment
+     */
+    private void writeAutoIncrementCreateStmts(Database database, Table table, Column column) throws IOException
+    {
+        print("CREATE GENERATOR ");
+        printIdentifier(getGeneratorName(table, column));
+        printEndOfStatement();
+
+        print("CREATE TRIGGER ");
+        printIdentifier(getConstraintName("trg", table, column.getName(), null));
+        print(" FOR ");
+        printlnIdentifier(getTableName(table));
+        println("ACTIVE BEFORE INSERT POSITION 0 AS");
+        print("BEGIN IF (NEW.");
+        printIdentifier(getColumnName(column));
+        print(" IS NULL) THEN NEW.");
+        printIdentifier(getColumnName(column));
+        print(" = GEN_ID(");
+        printIdentifier(getGeneratorName(table, column));
+        print(", 1); END");
+        printEndOfStatement();
+    }
+
+    /**
+     * Writes the statements to drop the auto-increment status for the given column.
+     * 
+     * @param table  The table
+     * @param column The column to remove the auto-increment status for
+     */
+    private void writeAutoIncrementDropStmts(Table table, Column column) throws IOException
+    {
+        print("DROP TRIGGER ");
+        printIdentifier(getConstraintName("trg", table, column.getName(), null));
+        printEndOfStatement();
+
+        print("DROP GENERATOR ");
+        printIdentifier(getGeneratorName(table, column));
+        printEndOfStatement();
+    }
+
+    /**
+     * Determines the name of the generator for an auto-increment column.
+     * 
+     * @param table  The table
+     * @param column The auto-increment column
+     * @return The generator name
+     */
+    protected String getGeneratorName(Table table, Column column)
+    {
+    	return getConstraintName("gen", table, column.getName(), null);
     }
 
     /**
@@ -151,14 +166,14 @@
         {
             StringBuffer result = new StringBuffer();
     
+            result.append("SELECT ");
             for (int idx = 0; idx < columns.length; idx++)
             {
-                result.append("SELECT GEN_ID (");
+                result.append("GEN_ID(");
                 result.append(getConstraintName("gen", table, columns[idx].getName(), null));
-                result.append(",0 ) FROM RDB$DATABASE");
-                result.append(table.getName());
-                result.append(getDelimitedIdentifier(columns[idx].getName()));
+                result.append(", 0)");
             }
+            result.append(" FROM RDB$DATABASE");
             return result.toString();
         }
     }
@@ -208,64 +223,62 @@
      */
     protected void processTableStructureChanges(Database currentModel, Database desiredModel, Table sourceTable, Table targetTable, Map parameters, List changes) throws IOException
     {
-        // First we drop primary keys as necessary
+    	// TODO: Dropping of primary keys is currently not supported because we cannot
+    	//       determine the pk constraint names and drop them in one go
+    	//       (We could used a stored procedure if Firebird would allow them to use DDL)
+    	//       This will be easier once named primary keys are supported
+        boolean pkColumnAdded = false;
+
         for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)
         {
             TableChange change = (TableChange)changeIt.next();
 
-            if (change instanceof RemovePrimaryKeyChange)
+            if (change instanceof AddColumnChange)
             {
-                processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
-                changeIt.remove();
+            	AddColumnChange addColumnChange = (AddColumnChange)change;
+
+            	// TODO: we cannot add columns to the primary key this way
+            	//       because we would have to drop the pk first and then
+            	//       add a new one afterwards which is not supported yet
+            	if (addColumnChange.getNewColumn().isPrimaryKey())
+                {
+                    pkColumnAdded = true;   
+                }
+                else
+            	{
+	            	processChange(currentModel, desiredModel, addColumnChange);
+	                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
+	                changeIt.remove();
+            	}
             }
-            else if (change instanceof PrimaryKeyChange)
+            else if (change instanceof RemoveColumnChange)
             {
-                PrimaryKeyChange       pkChange       = (PrimaryKeyChange)change;
-                RemovePrimaryKeyChange removePkChange = new RemovePrimaryKeyChange(pkChange.getChangedTable(),
-                                                                                   pkChange.getOldPrimaryKeyColumns());
+            	RemoveColumnChange removeColumnChange = (RemoveColumnChange)change;
 
-                processChange(currentModel, desiredModel, removePkChange);
-                removePkChange.apply(currentModel);
+            	// TODO: we cannot drop primary key columns this way
+            	//       because we would have to drop the pk first and then
+            	//       add a new one afterwards which is not supported yet
+            	if (!removeColumnChange.getColumn().isPrimaryKey())
+            	{
+	            	processChange(currentModel, desiredModel, removeColumnChange);
+	                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
+	                changeIt.remove();
+            	}
             }
         }
-
         for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)
         {
             TableChange change = (TableChange)changeIt.next();
 
-            if (change instanceof AddColumnChange)
-            {
-                processChange(currentModel, desiredModel, (AddColumnChange)change);
-                change.apply(currentModel);
-                changeIt.remove();
-            }
-            else if (change instanceof RemoveColumnChange)
+            // we can only add a primary key if all columns are present in the table
+            // i.e. none was added during this alteration
+            if ((change instanceof AddPrimaryKeyChange) && !pkColumnAdded)
             {
-                processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }
-        super.processTableStructureChanges(currentModel, desiredModel, sourceTable, targetTable, parameters, changes);
-    }
-
-    /**
-     * Processes the removal of a primary key from a table.
-     * 
-     * @param currentModel The current database schema
-     * @param desiredModel The desired database schema
-     * @param change       The change object
-     */
-    protected void processChange(Database               currentModel,
-                                 Database               desiredModel,
-                                 RemovePrimaryKeyChange change) throws IOException
-    {
-        print("ALTER TABLE ");
-        printlnIdentifier(getTableName(change.getChangedTable()));
-        printIndent();
-        print("DROP PRIMARY KEY");
-        printEndOfStatement();
     }
 
     /**
@@ -286,11 +299,17 @@
         writeColumn(change.getChangedTable(), change.getNewColumn());
         printEndOfStatement();
 
+        Table curTable = currentModel.findTable(change.getChangedTable().getName(), getPlatform().isDelimitedIdentifierModeOn());
+
         if (!change.isAtEnd())
         {
-            Table  curTable   = currentModel.findTable(change.getChangedTable().getName(), getPlatform().isDelimitedIdentifierModeOn());
             Column prevColumn = change.getPreviousColumn();
 
+            if (prevColumn != null)
+            {
+            	// we need the corresponding column object from the current table
+            	prevColumn = curTable.findColumn(prevColumn.getName(), getPlatform().isDelimitedIdentifierModeOn());
+            }
             // Even though Firebird can only add columns, we can move them later on
             print("ALTER TABLE ");
             printlnIdentifier(getTableName(change.getChangedTable()));
@@ -298,9 +317,14 @@
             print("ALTER ");
             printIdentifier(getColumnName(change.getNewColumn()));
             print(" POSITION ");
-            print(prevColumn == null ? "0" : String.valueOf(curTable.getColumnIndex(prevColumn)));
+            // column positions start at 1 in Firebird
+            print(prevColumn == null ? "1" : String.valueOf(curTable.getColumnIndex(prevColumn) + 2));
             printEndOfStatement();
         }
+        if (change.getNewColumn().isAutoIncrement())
+        {
+            writeAutoIncrementCreateStmts(currentModel, curTable, change.getNewColumn());
+        }
     }
 
     /**
@@ -314,6 +338,10 @@
                                  Database           desiredModel,
                                  RemoveColumnChange change) throws IOException
     {
+        if (change.getColumn().isAutoIncrement())
+        {
+            writeAutoIncrementDropStmts(change.getChangedTable(), change.getColumn());
+        }
         print("ALTER TABLE ");
         printlnIdentifier(getTableName(change.getChangedTable()));
         printIndent();

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdModelReader.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdModelReader.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdModelReader.java Thu May 25 14:48:07 2006
@@ -170,7 +170,8 @@
 
             while (rs.next())
             {
-                Column column = (Column)names.get(rs.getString(1).trim());
+                String generatorName = rs.getString(1).trim();
+                Column column        = (Column)names.get(generatorName);
 
                 if (column != null)
                 {
@@ -330,8 +331,10 @@
 	 */
 	protected boolean isInternalPrimaryKeyIndex(DatabaseMetaDataWrapper metaData, Table table, Index index)
 	{
-		// Firebird generates an unique index for the pks of the form "RDB$PRIMARY825"
-		return index.getName().startsWith("RDB$PRIMARY");
+        // In Firebird, primary keys can only be determined from a live database by looking for
+        // unique indexes that cover the primary key columns
+		// These checks however already have been done when DdlUtils enters this method 
+		return true;
 	}
 
 	/**

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdPlatform.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdPlatform.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/firebird/FirebirdPlatform.java Thu May 25 14:48:07 2006
@@ -16,16 +16,8 @@
  * limitations under the License.
  */
 
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.sql.SQLWarning;
-import java.sql.Statement;
 import java.sql.Types;
-import java.util.StringTokenizer;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.ddlutils.DynaSqlException;
 import org.apache.ddlutils.PlatformInfo;
 import org.apache.ddlutils.platform.PlatformImplBase;
 
@@ -45,8 +37,6 @@
     public static final String JDBC_DRIVER      = "org.firebirdsql.jdbc.FBDriver";
     /** The subprotocol used by the standard Firebird driver. */
     public static final String JDBC_SUBPROTOCOL = "firebirdsql";
-    /** The log for this platform. */
-    private final Log _log = LogFactory.getLog(getClass());
 
     /**
      * Creates a new Firebird platform instance.
@@ -100,120 +90,4 @@
     {
         return DATABASENAME;
     }
-
-    /**
-     * Firebird-specific replacement for
-     * {@link org.apache.ddlutils.platform.PlatformImplBase#evaluateBatch(Connection, String, boolean)}
-     * that executes blocks delimited by the term {@link FirebirdBuilder#TERM_COMMAND}
-     * (defined in the database via <code>SET TERM !!;</code>), in one go.
-     *
-     * @param connection      The connection to use
-     * @param sql             The sql to process
-     * @param continueOnError Whether to continue when an error occurs
-     * @return The number of errors
-     */
-    public int evaluateBatch(Connection connection, String sql, boolean continueOnError) throws DynaSqlException
-    {
-        Statement statement    = null;
-        int       commandCount = 0;
-        int       errors       = 0;
-
-        try
-        {
-            statement = connection.createStatement();
-
-            StringTokenizer tokenizer = new StringTokenizer(sql, ";");
-            StringBuffer    command   = new StringBuffer();
-    
-            while (tokenizer.hasMoreTokens())
-            {
-                String token = tokenizer.nextToken().trim();
-
-                command.setLength(0);
-
-                if (token.equals(FirebirdBuilder.TERM_COMMAND))
-                {
-                    while (tokenizer.hasMoreTokens())
-                    {
-                        token = tokenizer.nextToken().trim();  
-
-                        if (token.length() > 0)
-                        {
-                            if (token.equals(FirebirdBuilder.TERM_COMMAND))
-                            {
-                                break;
-                            }
-                            else
-                            {
-                                command.append(token);
-                                command.append(";");
-                            }
-                        }
-                        
-                    }
-                }
-                else
-                {
-                    command.append(token);
-                }
-                if (command.length() == 0)
-                {
-                    continue;
-                }
-                
-                commandCount++;
-                
-                if (_log.isDebugEnabled())
-                {
-                    _log.debug("About to execute SQL " + command.toString());
-                }
-                try
-                {
-                    int results = statement.executeUpdate(command.toString());
-
-                    if (_log.isDebugEnabled())
-                    {
-                        _log.debug("After execution, " + results + " row(s) have been changed");
-                    }
-                }
-                catch (SQLException ex)
-                {
-                    if (continueOnError)
-                    {
-                        _log.error("SQL Command " + command.toString() + " failed", ex);
-                        errors++;
-                    }
-                    else
-                    {
-                        throw new DynaSqlException("Error while executing SQL "+command, ex);
-                    }
-                }
-
-                // lets display any warnings
-                SQLWarning warning = connection.getWarnings();
-
-                while (warning != null)
-                {
-                    _log.warn(warning.toString());
-                    warning = warning.getNextWarning();
-                }
-                connection.clearWarnings();
-            }
-            if (_log.isInfoEnabled())
-            {
-                _log.info("Executed "+ commandCount + " SQL command(s) with " + errors + " error(s)");
-            }
-        }
-        catch (SQLException ex)
-        {
-            throw new DynaSqlException("Error while executing SQL", ex);
-        }
-        finally
-        {
-            closeStatement(statement);
-        }
-
-        return errors;
-    }
-
 }

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?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- 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 Thu May 25 14:48:07 2006
@@ -102,7 +102,7 @@
             AddColumnChange addColumnChange = (AddColumnChange)changeIt.previous();
 
             processChange(currentModel, desiredModel, addColumnChange);
-            addColumnChange.apply(currentModel);
+            addColumnChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             changeIt.remove();
         }
 
@@ -118,7 +118,7 @@
                 if (!removeColumnChange.getColumn().isPrimaryKey())
                 {
                     processChange(currentModel, desiredModel, removeColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java Thu May 25 14:48:07 2006
@@ -329,7 +329,7 @@
             if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -339,7 +339,7 @@
                                                                                    pkChange.getOldPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, removePkChange);
-                removePkChange.apply(currentModel);
+                removePkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             }
         }
 
@@ -359,14 +359,14 @@
                 if (addColumnChange.isAtEnd())
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
             else if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof ColumnAutoIncrementChange)
@@ -399,7 +399,7 @@
                     processedColumns.add(targetColumn);
                 }
                 changes.remove(change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             }
         }
         // Finally we add primary keys
@@ -410,7 +410,7 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -420,7 +420,7 @@
                                                                           pkChange.getNewPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, addPkChange);
-                addPkChange.apply(currentModel);
+                addPkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 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?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- 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 Thu May 25 14:48:07 2006
@@ -188,7 +188,7 @@
             AddColumnChange addColumnChange = (AddColumnChange)changeIt.next();
 
             processChange(currentModel, desiredModel, addColumnChange);
-            addColumnChange.apply(currentModel);
+            addColumnChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             changeIt.remove();
         }
 
@@ -203,25 +203,25 @@
             if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (PrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/oracle/Oracle8Builder.java Thu May 25 14:48:07 2006
@@ -278,7 +278,7 @@
             if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -288,7 +288,7 @@
                                                                                    pkChange.getOldPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, removePkChange);
-                removePkChange.apply(currentModel);
+                removePkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             }
         }
 
@@ -307,14 +307,14 @@
                 if (addColumnChange.isAtEnd())
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
             else if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }
@@ -326,7 +326,7 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -336,7 +336,7 @@
                                                                           pkChange.getNewPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, addPkChange);
-                addPkChange.apply(currentModel);
+                addPkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/postgresql/PostgreSqlBuilder.java Thu May 25 14:48:07 2006
@@ -191,14 +191,14 @@
                     (addColumnChange.getNextColumn() == null))
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
             else if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sapdb/SapDbBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sapdb/SapDbBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sapdb/SapDbBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sapdb/SapDbBuilder.java Thu May 25 14:48:07 2006
@@ -92,7 +92,7 @@
             if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -102,7 +102,7 @@
                                                                                    pkChange.getOldPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, removePkChange);
-                removePkChange.apply(currentModel);
+                removePkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             }
         }
         // Next we add/change/remove columns
@@ -120,26 +120,26 @@
                 if (addColumnChange.isAtEnd())
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
             else if (change instanceof ColumnDefaultValueChange)
             {
                 processChange(currentModel, desiredModel, (ColumnDefaultValueChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof ColumnRequiredChange)
             {
                 processChange(currentModel, desiredModel, (ColumnRequiredChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }
@@ -151,7 +151,7 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -161,7 +161,7 @@
                                                                           pkChange.getNewPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, addPkChange);
-                addPkChange.apply(currentModel);
+                addPkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseBuilder.java Thu May 25 14:48:07 2006
@@ -278,7 +278,7 @@
             if (change instanceof RemovePrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -288,7 +288,7 @@
                                                                                    pkChange.getOldPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, removePkChange);
-                removePkChange.apply(currentModel);
+                removePkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
             }
         }
 
@@ -308,14 +308,14 @@
                 if (addColumnChange.isAtEnd())
                 {
                     processChange(currentModel, desiredModel, addColumnChange);
-                    change.apply(currentModel);
+                    change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                     changeIt.remove();
                 }
             }
             else if (change instanceof RemoveColumnChange)
             {
                 processChange(currentModel, desiredModel, (RemoveColumnChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof ColumnAutoIncrementChange)
@@ -366,7 +366,7 @@
                 }
                 for (Iterator changeIt = changesPerColumn.iterator(); changeIt.hasNext();)
                 {
-                    ((ColumnChange)changeIt.next()).apply(currentModel);
+                    ((ColumnChange)changeIt.next()).apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 }
             }
         }
@@ -378,7 +378,7 @@
             if (change instanceof AddPrimaryKeyChange)
             {
                 processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);
-                change.apply(currentModel);
+                change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
             else if (change instanceof PrimaryKeyChange)
@@ -388,7 +388,7 @@
                                                                           pkChange.getNewPrimaryKeyColumns());
 
                 processChange(currentModel, desiredModel, addPkChange);
-                addPkChange.apply(currentModel);
+                addPkChange.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
                 changeIt.remove();
             }
         }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java Thu May 25 14:48:07 2006
@@ -449,6 +449,46 @@
     }
 
     /**
+     * Tests the addition of an auto-increment column.
+     */
+    public void testAddAutoIncrementColumn()
+    {
+    	if (!getPlatformInfo().isNonPKIdentityColumnsSupported())
+    	{
+    		return;
+    	}
+
+    	final String model1Xml = 
+            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+            "<database name='roundtriptest'>\n"+
+            "  <table name='roundtrip'>\n"+
+            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+            "  </table>\n"+
+            "</database>";
+        final String model2Xml = 
+            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+            "<database name='roundtriptest'>\n"+
+            "  <table name='roundtrip'>\n"+
+            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+            "    <column name='avalue' type='INTEGER' autoIncrement='true'/>\n"+
+            "  </table>\n"+
+            "</database>";
+
+        createDatabase(model1Xml);
+
+        insertRow("roundtrip", new Object[] { new Integer(1) });
+
+    	alterDatabase(model2Xml);
+
+        assertEquals(getAdjustedModel(),
+                     readModelFromDatabase("roundtriptest"));
+
+        List beans = getRows("roundtrip");
+
+        assertEquals(new Integer(1), beans.get(0), "avalue");
+    }
+
+    /**
      * Tests the addition of several columns.
      */
     public void testAddColumns()
@@ -678,6 +718,41 @@
         createDatabase(model1Xml);
 
         insertRow("roundtrip", new Object[] { new Integer(1), "test" });
+
+    	alterDatabase(model2Xml);
+
+        assertEquals(getAdjustedModel(),
+                     readModelFromDatabase("roundtriptest"));
+
+        List beans = getRows("roundtrip");
+
+        assertEquals(new Integer(1), beans.get(0), "pk");
+    }
+
+    /**
+     * Tests the removal of an auto-increment column.
+     */
+    public void testDropAutoIncrementColumn()
+    {
+        final String model1Xml = 
+            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+            "<database name='roundtriptest'>\n"+
+            "  <table name='roundtrip'>\n"+
+            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+            "    <column name='avalue' type='INTEGER' autoIncrement='true'/>\n"+
+            "  </table>\n"+
+            "</database>";
+        final String model2Xml = 
+            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+            "<database name='roundtriptest'>\n"+
+            "  <table name='roundtrip'>\n"+
+            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+            "  </table>\n"+
+            "</database>";
+
+        createDatabase(model1Xml);
+
+        insertRow("roundtrip", new Object[] { new Integer(1) });
 
     	alterDatabase(model2Xml);
 

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java?rev=409480&r1=409479&r2=409480&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java Thu May 25 14:48:07 2006
@@ -95,9 +95,11 @@
     public void testColumnConstraints() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE \"constraints\";\n"+
+            "DROP TRIGGER \"trg_constraints_OL_PK_AUTO_INCR\";\n" +
             "DROP GENERATOR \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
+            "DROP TRIGGER \"trg_constraints_COL_AUTO_INCR\";\n" +
             "DROP GENERATOR \"gen_constraints_COL_AUTO_INCR\";\n" +
+            "DROP TABLE \"constraints\";\n"+
             "CREATE TABLE \"constraints\"\n"+
             "(\n"+
             "    \"COL_PK\"               VARCHAR(32),\n"+
@@ -109,23 +111,13 @@
             "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
             ");\n"+
             "CREATE GENERATOR \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
-            "--TERM--;\n"+
             "CREATE TRIGGER \"trg_constraints_OL_PK_AUTO_INCR\" FOR \"constraints\"\n"+
             "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
-            "BEGIN\n"+
-            "  IF (NEW.\"COL_PK_AUTO_INCR\" IS NULL) THEN\n"+
-            "    NEW.\"COL_PK_AUTO_INCR\" = GEN_ID(\"gen_constraints_OL_PK_AUTO_INCR\", 1);\n"+
-            "END;\n"+
-            "--TERM--;\n"+
+            "BEGIN IF (NEW.\"COL_PK_AUTO_INCR\" IS NULL) THEN NEW.\"COL_PK_AUTO_INCR\" = GEN_ID(\"gen_constraints_OL_PK_AUTO_INCR\", 1); END;\n"+
             "CREATE GENERATOR \"gen_constraints_COL_AUTO_INCR\";\n" +
-            "--TERM--;\n"+
             "CREATE TRIGGER \"trg_constraints_COL_AUTO_INCR\" FOR \"constraints\"\n"+
             "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
-            "BEGIN\n"+
-            "  IF (NEW.\"COL_AUTO_INCR\" IS NULL) THEN\n"+
-            "    NEW.\"COL_AUTO_INCR\" = GEN_ID(\"gen_constraints_COL_AUTO_INCR\", 1);\n"+
-            "END;\n"+
-            "--TERM--;\n",
+            "BEGIN IF (NEW.\"COL_AUTO_INCR\" IS NULL) THEN NEW.\"COL_AUTO_INCR\" = GEN_ID(\"gen_constraints_COL_AUTO_INCR\", 1); END;\n",
             createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
     }