You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-commits@db.apache.org by ka...@apache.org on 2006/04/11 11:10:36 UTC

svn commit: r393164 - in /db/derby/code/trunk/java: build/org/apache/derbyBuild/ client/org/apache/derby/client/am/ engine/org/apache/derby/loc/ shared/org/apache/derby/shared/common/reference/

Author: kahatlen
Date: Tue Apr 11 02:10:34 2006
New Revision: 393164

URL: http://svn.apache.org/viewcvs?rev=393164&view=rev
Log:
Partial patch for DERBY-924, DERBY-925 and DERBY-970.

New method added: DatabaseMetaData.checkServerJdbcVersionX() - checks
whether the server supports a given JDBC version. Throws an exception
if it doesn't.

Contributed by Dyre Tjeldvoll <Dy...@Sun.COM>.

Modified:
    db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/DatabaseMetaData.java
    db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java

Modified: db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java?rev=393164&r1=393163&r2=393164&view=diff
==============================================================================
--- db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java (original)
+++ db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java Tue Apr 11 02:10:34 2006
@@ -70,6 +70,7 @@
         clientMessageIds.add("J104");
         clientMessageIds.add(SQLState.HOLDABLE_RESULT_SET_NOT_AVAILABLE);
         clientMessageIds.add(SQLState.JDBC_METHOD_NOT_IMPLEMENTED);
+        clientMessageIds.add(SQLState.JDBC_METHOD_NOT_SUPPORTED_BY_SERVER);
         clientMessageIds.add(SQLState.DRDA_NO_AUTOCOMMIT_UNDER_XA);
         clientMessageIds.add(SQLState.DRDA_INVALID_XA_STATE_ON_COMMIT_OR_ROLLBACK);
         clientMessageIds.add(SQLState.HOLDABLE_RESULT_SET_NOT_AVAILABLE);

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/DatabaseMetaData.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/DatabaseMetaData.java?rev=393164&r1=393163&r2=393164&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/DatabaseMetaData.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/DatabaseMetaData.java Tue Apr 11 02:10:34 2006
@@ -63,6 +63,11 @@
 
     public ProductLevel productLevel_;
 
+    /** The JDBC major version supported by the server. */
+    private final int serverJdbcMajorVersion;
+    /** The JDBC minor version supported by the server. */
+    private final int serverJdbcMinorVersion;
+
     private ResultSet lastGetColumnPrivilegesResultSet_ = null;
     private ResultSet lastGetColumnsResultSet_ = null;
     private ResultSet lastGetForeignKeysResultSet_ = null;
@@ -91,6 +96,13 @@
         if (connection.isXAConnection()) {
             connection.xaHostVersion_ = productLevel_.versionLevel_;
         }
+        if (productLevel_.lessThan(10, 2, 0)) {
+            serverJdbcMajorVersion = 3;
+            serverJdbcMinorVersion = 0;
+        } else {
+            serverJdbcMajorVersion = 4;
+            serverJdbcMinorVersion = 0;
+        }
     }
 
     // ---------------------------jdbc 1------------------------------------------
@@ -2395,6 +2407,30 @@
 
         } else {
             agent_.checkForDeferredExceptions();
+        }
+    }
+
+    /**
+     * Checks whether the server supports a JDBC version. If the
+     * server does not support the JDBC version, an exception is
+     * thrown.
+     *
+     * @param method name of the method for which support is needed on
+     * the server (used in exception message)
+     * @param major minimum JDBC major version
+     * @param minor minimum JDBC minor version if major version matches
+     * @exception SqlException if the server does not support the
+     * specified JDBC version
+     */
+    protected void checkServerJdbcVersionX(String method, int major, int minor)
+        throws SqlException
+    {
+        if (serverJdbcMajorVersion < major ||
+            (serverJdbcMajorVersion == major &&
+             serverJdbcMinorVersion < minor)) {
+            MessageId mid =
+                new MessageId(SQLState.JDBC_METHOD_NOT_SUPPORTED_BY_SERVER);
+            throw new SqlException(agent_.logWriter_, mid, method);
         }
     }
 }

Modified: db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties?rev=393164&r1=393163&r2=393164&view=diff
==============================================================================
--- db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties (original)
+++ db/derby/code/trunk/java/engine/org/apache/derby/loc/messages_en.properties Tue Apr 11 02:10:34 2006
@@ -1165,6 +1165,7 @@
 #0A - feature not implemented
 0A000.S=Feature not implemented: {0}.
 0A000.S.1=JDBC method is not yet implemented.
+0A000.S.2=JDBC method {0} is not supported by the server. Please upgrade the server.
 
 XJ004.C=Database ''{0}'' not found.
 A020=Invalid authentication.

Modified: db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java?rev=393164&r1=393163&r2=393164&view=diff
==============================================================================
--- db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java (original)
+++ db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java Tue Apr 11 02:10:34 2006
@@ -1351,6 +1351,7 @@
 
     String NOT_IMPLEMENTED                                          = "0A000.S";
     String JDBC_METHOD_NOT_IMPLEMENTED                              = "0A000.S.1";
+    String JDBC_METHOD_NOT_SUPPORTED_BY_SERVER                      = "0A000.S.2";