You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by kw...@apache.org on 2006/12/29 16:19:18 UTC

svn commit: r491027 - in /incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql: DB2Dictionary.java DBDictionary.java

Author: kwsutter
Date: Fri Dec 29 07:19:17 2006
New Revision: 491027

URL: http://svn.apache.org/viewvc?view=rev&rev=491027
Log:
Changes for JIRA OPENJPA-77 issue.

These changes allow the use of the DB2Dictionary with DB2 on z/OS.  May need more in the future, but these will get us started...

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

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?view=diff&rev=491027&r1=491026&r2=491027
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Fri Dec 29 07:19:17 2006
@@ -36,6 +36,12 @@
 
         nextSequenceQuery = "VALUES NEXTVAL FOR {0}";
 
+        sequenceSQL = "SELECT SEQSCHEMA AS SEQUENCE_SCHEMA, "
+            + "SEQNAME AS SEQUENCE_NAME FROM SYSCAT.SEQUENCES";
+        sequenceSchemaSQL = "SEQSCHEMA = ?";
+        sequenceNameSQL = "SEQNAME = ?";
+        characterColumnSize = 254;
+
         binaryTypeName = "BLOB(1M)";
         longVarbinaryTypeName = "BLOB(1M)";
         varbinaryTypeName = "BLOB(1M)";
@@ -112,17 +118,16 @@
 
     protected String getSequencesSQL(String schemaName, String sequenceName) {
         StringBuffer buf = new StringBuffer();
-        buf.append("SELECT SEQSCHEMA AS SEQUENCE_SCHEMA, ").
-            append("SEQNAME AS SEQUENCE_NAME FROM SYSCAT.SEQUENCES");
+        buf.append(sequenceSQL);
         if (schemaName != null || sequenceName != null)
             buf.append(" WHERE ");
         if (schemaName != null) {
-            buf.append("SEQSCHEMA = ?");
+            buf.append(sequenceSchemaSQL);
             if (sequenceName != null)
                 buf.append(" AND ");
         }
         if (sequenceName != null)
-            buf.append("SEQNAME = ?");
+            buf.append(sequenceNameSQL);
         return buf.toString();
     }
 
@@ -157,6 +162,24 @@
 	    		supportsLockingWithOuterJoin = true;
 	    		forUpdateClause = "WITH RR USE AND KEEP UPDATE LOCKS";
 	    	}
+
+            if (metaData.getDatabaseProductVersion().indexOf("DSN") != -1) {
+                // DB2 Z/OS
+                characterColumnSize = 255;
+                lastGeneratedKeyQuery = "SELECT IDENTITY_VAL_LOCAL() FROM "
+                    + "SYSIBM.SYSDUMMY1";
+                nextSequenceQuery = "SELECT NEXTVAL FOR {0} FROM "
+                    + "SYSIBM.SYSDUMMY1";
+                sequenceSQL = "SELECT SCHEMA AS SEQUENCE_SCHEMA, "
+                    + "NAME AS SEQUENCE_NAME FROM SYSIBM.SYSSEQUENCES";
+                sequenceSchemaSQL = "SCHEMA = ?";
+                sequenceNameSQL = "NAME = ?";
+                if (maj == 8) {
+                    // DB2 Z/OS Version 8: no bigint support, hence map Java
+                    // long to decimal
+                    bigintTypeName = "DECIMAL(31,0)";
+                }
+            }
     	}
     }
 }

Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?view=diff&rev=491027&r1=491026&r2=491027
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Fri Dec 29 07:19:17 2006
@@ -287,6 +287,9 @@
     public boolean supportsAutoAssign = false;
     public String lastGeneratedKeyQuery = null;
     public String nextSequenceQuery = null;
+    public String sequenceSQL = null;
+    public String sequenceSchemaSQL = null;
+    public String sequenceNameSQL = null;
 
     protected JDBCConfiguration conf = null;
     protected Log log = null;