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/01/05 00:33:21 UTC

svn commit: r366028 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql: MySqlModelReader.java MySqlPlatform.java

Author: tomdz
Date: Wed Jan  4 15:33:17 2006
New Revision: 366028

URL: http://svn.apache.org/viewcvs?rev=366028&view=rev
Log:
Finished the implementation of MySql support

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlPlatform.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlModelReader.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlModelReader.java?rev=366028&r1=366027&r2=366028&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlModelReader.java Wed Jan  4 15:33:17 2006
@@ -17,13 +17,9 @@
  */
 
 import java.sql.SQLException;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.ddlutils.PlatformInfo;
-import org.apache.ddlutils.model.Column;
 import org.apache.ddlutils.model.ForeignKey;
 import org.apache.ddlutils.model.Index;
 import org.apache.ddlutils.model.Table;
@@ -60,88 +56,27 @@
     protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
     {
         Table table =  super.readTable(metaData, values);
-//        List indexes = new ArrayList();
-//        // this could be optimized, we need to check if an index can be named PRIMARY without
-//        // being a primary key. Taking the safe path for now.
-//        for (int i = 0; i < table.getIndexCount(); i++)
-//        {
-//            Index index = table.getIndex(i);
-//            if ("PRIMARY".equals(index.getName()))
-//            {
-//                for (int c = 0; c < index.getColumnCount(); c++)
-//                {
-//                    String columnName = index.getColumn(c).getName();
-//                    Column column  = table.findColumn(columnName);
-//                    if (column.isPrimaryKey())
-//                    {
-//                        indexes.add(index);
-//                    }
-//                }
-//            }
-//            else
-//            {
-//                for (int f = 0; f < table.getForeignKeyCount(); f++)
-//                {
-//                    ForeignKey fk = table.getForeignKey(f);
-//                    if (fk.getName().equals(index.getName()))
-//                    {
-//                        indexes.add(index);
-//                    }
-//                }
-//            }
-//        }
-//        for (int i = 0; i < indexes.size(); i++)
-//        {
-//            table.removeIndex((Index) indexes.get(i));
-//        }
+
+        determineAutoIncrementFromResultSetMetaData(table, table.getPrimaryKeyColumns());
+        
         return table;
     }
 
     /**
      * {@inheritDoc}
      */
-    protected Column readColumn(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
+    protected boolean isInternalPrimaryKeyIndex(Table table, Index index)
     {
-        Column column = super.readColumn(metaData, values);
-
-        if (column.getTypeCode() == Types.BIT)
-        {
-            // MySql
-        }
-//        if ("".equals(column.getDescription()))
-//        {
-//            column.setDescription(null);
-//        }
-//        if ("".equals(column.getParsedDefaultValue()))
-//        {
-//            column.setDefaultValue(null);
-//        }
-//        if ("auto_increment".equals(column.getDescription()))
-//        {
-//            column.setAutoIncrement(true);
-//        }
-//        switch (column.getTypeCode())
-//        {
-//            case Types.INTEGER:
-//                if ("0".equals(column.getDefaultValue()))
-//                {
-//                    column.setDefaultValue(null);
-//                }
-//            case Types.DOUBLE:
-//                column.setSize(null);
-//                break;
-//        }
-        return column;
+        // MySql defines a unique index "PRIMARY" for primary keys
+        return "PRIMARY".equals(index.getName());
     }
 
     /**
      * {@inheritDoc}
      */
-    protected boolean isInternalPrimaryKeyIndex(Table table, Index index)
+    protected boolean isInternalForeignKeyIndex(Table table, ForeignKey fk, Index index)
     {
-        // MySql defines a unique index "PRIMARY" for primary keys
-        return "PRIMARY".equals(index.getName());
+        // MySql defines a non-unique index of the same name as the fk
+        return new MySqlBuilder(getPlatformInfo()).getForeignKeyName(table, fk).equals(index.getName());
     }
-
-
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlPlatform.java?rev=366028&r1=366027&r2=366028&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mysql/MySqlPlatform.java Wed Jan  4 15:33:17 2006
@@ -54,7 +54,7 @@
         // see http://dev.mysql.com/doc/refman/4.1/en/example-auto-increment.html
         info.setSupportingNonPKIdentityColumns(false);
         // MySql returns synthetic default values for pk columns
-        info.setReturningDefaultValueForPrimaryKeys(true);
+        info.setReturningDefaultValueForRequired(true);
         info.setCommentPrefix("#");
         // Double quotes are only allowed for delimiting identifiers if the server SQL mode includes ANSI_QUOTES 
         info.setDelimiterToken("`");