You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/05/08 03:31:37 UTC

svn commit: r772828 - in /openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql: DBDictionary.java MySQLDictionary.java

Author: ppoddar
Date: Fri May  8 01:31:37 2009
New Revision: 772828

URL: http://svn.apache.org/viewvc?rev=772828&view=rev
Log:
OPENJA-1070:support for composite foreign keys on MySQL Version >= 5

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=772828&r1=772827&r2=772828&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Fri May  8 01:31:37 2009
@@ -181,6 +181,7 @@
     public int maxIndexNameLength = 128;
     public int maxIndexesPerTable = Integer.MAX_VALUE;
     public boolean supportsForeignKeys = true;
+    public boolean supportsForeignKeysComposite = true;
     public boolean supportsUniqueConstraints = true;
     public boolean supportsDeferredConstraints = true;
     public boolean supportsRestrictDeleteAction = true;
@@ -3381,6 +3382,8 @@
     protected String getForeignKeyConstraintSQL(ForeignKey fk) {
         if (!supportsForeignKeys)
             return null;
+        if (fk.getColumns().length > 0 && !supportsForeignKeysComposite)
+            return null;
         if (fk.getDeleteAction() == ForeignKey.ACTION_NONE)
             return null;
         if (fk.isDeferred() && !supportsDeferredForeignKeyConstraints())

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java?rev=772828&r1=772827&r2=772828&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/MySQLDictionary.java Fri May  8 01:31:37 2009
@@ -141,6 +141,7 @@
         if (maj < 4 || (maj == 4 && min < 1)) {
             supportsSubselect = false;
             allowsAliasInBulkClause = false;
+            supportsForeignKeysComposite = false;
         }
         if (maj > 5 || (maj == 5 && min >= 1))
             supportsXMLColumn = true;
@@ -216,13 +217,6 @@
         System.arraycopy(sql, 0, ret, cols.length, sql.length);
         return ret;
     }
-
-    protected String getForeignKeyConstraintSQL(ForeignKey fk) {
-        // mysql does not support composite foreign keys
-        if (fk.getColumns().length > 1)
-            return null;
-        return super.getForeignKeyConstraintSQL(fk);
-    }
     
     public String[] getDeleteTableContentsSQL(Table[] tables) {
         // mysql >= 4 supports more-optimal delete syntax