You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by mi...@apache.org on 2009/07/29 17:23:06 UTC

svn commit: r798945 - in /openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql: DB2Dictionary.java DBDictionary.java InformixDictionary.java

Author: mikedd
Date: Wed Jul 29 15:23:05 2009
New Revision: 798945

URL: http://svn.apache.org/viewvc?rev=798945&view=rev
Log:
OPENJPA-622:
Move check for isJDBC to DBDictionary class and prevent informix lock timeout
Submitted By : Jody Grassel based on Catalina's changes in trunk

Modified:
    openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
    openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
    openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java

Modified: openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java?rev=798945&r1=798944&r2=798945&view=diff
==============================================================================
--- openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java (original)
+++ openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DB2Dictionary.java Wed Jul 29 15:23:05 2009
@@ -203,15 +203,6 @@
         return conn;
     }
 
-    private boolean isJDBC3(DatabaseMetaData meta) {
-        try {
-            // JDBC3-only method, so it might throw a AbstractMethodError
-            return meta.getJDBCMajorVersion() >= 3;
-        } catch (Throwable t) {
-            return false;
-        }
-    }
-
     public void connectedConfiguration(Connection conn) throws SQLException {
     	super.connectedConfiguration(conn);
 
@@ -231,7 +222,7 @@
         }
         
     	if (db2ServerType == 0) {
-    	    if (isJDBC3(metaData)) {
+    	    if (isJDBC3) {
     	        maj = metaData.getDatabaseMajorVersion();
     	        min = metaData.getDatabaseMinorVersion();
     	    }

Modified: openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java?rev=798945&r1=798944&r2=798945&view=diff
==============================================================================
--- openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java (original)
+++ openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/DBDictionary.java Wed Jul 29 15:23:05 2009
@@ -143,7 +143,7 @@
     private static final String ZERO_TIMESTAMP_STR =
         "'" + new Timestamp(0) + "'";
 
-    private static final Localizer _loc = Localizer.forPackage
+    protected static final Localizer _loc = Localizer.forPackage
         (DBDictionary.class);
 
     // schema data
@@ -304,6 +304,7 @@
     protected JDBCConfiguration conf = null;
     protected Log log = null;
     protected boolean connected = false;
+    protected boolean isJDBC3 = false;
     protected final Set reservedWordSet = new HashSet();
     protected final Set systemSchemaSet = new HashSet();
     protected final Set systemTableSet = new HashSet();
@@ -355,15 +356,30 @@
      */
     public void connectedConfiguration(Connection conn)
         throws SQLException {
-        if (!connected) {
+        DatabaseMetaData metaData = null;
+        try {
+            metaData = conn.getMetaData();
+            // JDBC3-only method, so it might throw a
+            // AbstractMethodError
             try {
-                if (log.isTraceEnabled())
-                    log.trace(DBDictionaryFactory.toString
-                        (conn.getMetaData()));
-            } catch (Exception e) {
-                log.trace(e.toString(), e);
+                isJDBC3 = metaData.getJDBCMajorVersion() >= 3;
+            } catch (Throwable t) {
+                // ignore if not JDBC3
             }
+        } catch (Exception e) {
+            if (log.isTraceEnabled())
+                log.trace(e.toString(), e);
+        }
+        
+        if (log.isTraceEnabled()) {
+            log.trace(DBDictionaryFactory.toString(metaData));
+            if (isJDBC3)
+                log.trace(_loc.get("connection-defaults", new Object[]{
+                        new Boolean(conn.getAutoCommit()), 
+                        new Integer(conn.getHoldability()),
+                        new Integer(conn.getTransactionIsolation())}));
         }
+        
         connected = true;
     }
 

Modified: openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java
URL: http://svn.apache.org/viewvc/openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java?rev=798945&r1=798944&r2=798945&view=diff
==============================================================================
--- openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java (original)
+++ openjpa/branches/1.0.x/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/sql/InformixDictionary.java Wed Jul 29 15:23:05 2009
@@ -122,7 +122,6 @@
         }));
 
         supportsQueryTimeout = false;
-        supportsMultipleNontransactionalResultSets = false;
         supportsLockingWithDistinctClause = false;
         supportsLockingWithMultipleTables = false;
         supportsLockingWithOrderClause = false;
@@ -148,6 +147,14 @@
             else
                 driverVendor = VENDOR_OTHER;
         }
+        if (isJDBC3) {
+            conn.setHoldability(ResultSet.HOLD_CURSORS_OVER_COMMIT);
+            if (log.isTraceEnabled())
+                log.trace(_loc.get("connection-defaults", new Object[]{
+                        new Boolean(conn.getAutoCommit()), 
+                        new Integer(conn.getHoldability()),
+                        new Integer(conn.getTransactionIsolation())}));
+        }
     }
 
     public Column[] getColumns(DatabaseMetaData meta, String catalog,