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 da...@apache.org on 2006/04/03 22:19:59 UTC

svn commit: r391139 - in /db/derby/code/trunk: java/build/org/apache/derbyBuild/ java/client/org/apache/derby/client/am/ java/client/org/apache/derby/loc/ java/shared/org/apache/derby/shared/common/reference/ java/testing/org/apache/derbyTesting/functi...

Author: davidvc
Date: Mon Apr  3 13:19:57 2006
New Revision: 391139

URL: http://svn.apache.org/viewcvs?rev=391139&view=rev
Log:
DERBY-842 : (Partial) - internationalized ColumnMetaData.java and also
removed some methods that were not in use.  Passes derbynetclientmats.


Modified:
    db/derby/code/trunk/java/build/org/apache/derbyBuild/splitmessages.java
    db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java
    db/derby/code/trunk/java/client/org/apache/derby/loc/clientmessages_en.properties
    db/derby/code/trunk/java/shared/org/apache/derby/shared/common/reference/SQLState.java
    db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/parameterMetaDataJdbc30.out
    db/derby/code/trunk/tools/testing/i18nTestGenerator/genClient2.sed

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=391139&r1=391138&r2=391139&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 Mon Apr  3 13:19:57 2006
@@ -61,6 +61,9 @@
         clientMessageIds.add(SQLState.LANG_DATE_SYNTAX_EXCEPTION);
         clientMessageIds.add(SQLState.CHARACTER_CONVERTER_NOT_AVAILABLE);
         clientMessageIds.add(SQLState.LANG_OUTSIDE_RANGE_FOR_DATATYPE);
+        clientMessageIds.add(SQLState.LANG_STATEMENT_CLOSED_NO_REASON);
+        clientMessageIds.add(SQLState.LANG_INVALID_COLUMN_POSITION);
+        clientMessageIds.add(SQLState.INVALID_COLUMN_NAME);
     }
 
 	public static void main(String[] args) throws Exception {

Modified: db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java?rev=391139&r1=391138&r2=391139&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/client/am/ColumnMetaData.java Mon Apr  3 13:19:57 2006
@@ -24,6 +24,7 @@
 
 import org.apache.derby.iapi.reference.DRDAConstants;
 import org.apache.derby.iapi.reference.JDBC30Translation;
+import org.apache.derby.shared.common.reference.SQLState;
 
 // Under JDBC 2, we must new up our parameter meta data as column meta data instances
 // Once we move to JDK 1.4 pre-req, create a ResultSetMetaData class and make this class abstract
@@ -106,7 +107,8 @@
     void checkForClosedStatement() throws SqlException {
         // agent_.checkForDeferredExceptions();
         if (statementClosed_) {
-            throw new SqlException(logWriter_, "Statement closed");
+            throw new SqlException(logWriter_, 
+            		new MessageId (SQLState.LANG_STATEMENT_CLOSED_NO_REASON));
         }
     }
 
@@ -308,7 +310,8 @@
             case Types.BLOB:
                 return (int) (2 * sqlLength_[column - 1]); // eg. "FF" represents just one byte
             default:
-                throw new SqlException(logWriter_, "not supported");
+                throw new SqlException(logWriter_, 
+                		new MessageId (SQLState.UNSUPPORTED_TYPE));
             }
         }
         catch ( SqlException e )
@@ -426,7 +429,8 @@
             case Types.TIMESTAMP:
                 return 26;
             default:
-                throw new SqlException(logWriter_, "Unregistered column type");
+                throw new SqlException(logWriter_, 
+                		new MessageId (SQLState.UNSUPPORTED_TYPE));
             }
         }
         catch ( SqlException e )
@@ -589,7 +593,8 @@
             case DRDAConstants.DB2_SQLTYPE_NNUMERIC:
                 return "NUMERIC";
             default:
-                throw new SqlException(logWriter_, "Not supported");
+                throw new SqlException(logWriter_, 
+                		new MessageId (SQLState.UNSUPPORTED_TYPE));
             }
         }
         catch ( SqlException e )
@@ -700,7 +705,8 @@
             case java.sql.Types.REF:
                 return "java.sql.Ref";
             default:
-                throw new SqlException(logWriter_, "Not supported");
+                throw new SqlException(logWriter_, 
+                		new MessageId (SQLState.UNSUPPORTED_TYPE));
             }
         }
         catch ( SqlException e )
@@ -714,8 +720,9 @@
 
     void checkForValidColumnIndex(int column) throws SqlException {
         if (column < 1 || column > columns_) {
-            throw new SqlException(logWriter_, "Invalid argument: column index " +
-                    column + " is out of range.");
+            throw new SqlException(logWriter_, 
+            		new MessageId (SQLState.LANG_INVALID_COLUMN_POSITION),
+            		new Integer (column), new Integer(columns_));
         }
     }
 
@@ -734,11 +741,13 @@
         return sqlxParmmode_[parameterIndex - 1] >= java.sql.ParameterMetaData.parameterModeInOut;
     }
 
+    /** This method does not appear to be in use -- davidvc@apache.org
     // Only called when column meta data is not described. Called by setXXX methods.
     public void guessInputParameterMetaData(int parameterIndex,
                                             int jdbcType) throws SqlException {
         guessInputParameterMetaData(parameterIndex, jdbcType, 0);
     }
+     */
 
     private void setParmModeForInputParameter(int parameterIndex) {
         if (sqlxParmmode_[parameterIndex - 1] == java.sql.ParameterMetaData.parameterModeOut) {
@@ -748,24 +757,6 @@
         }
     }
 
-    // Only called when column meta data is not described. Called by setXXX methods.
-    // Scale is only applied for Decimal or Numeric JDBC type.
-    public void guessInputParameterMetaData(int parameterIndex,
-                                            int jdbcType,
-                                            int scale) throws SqlException {
-        setParmModeForInputParameter(parameterIndex);
-        int driverType = getInternalTypeForGuessedOrRegisteredJdbcType(jdbcType);
-        // if output parameter has been registered already
-        if (isParameterModeGuessedAsOutput(parameterIndex)) {
-            if (!isCompatibleDriverTypes(types_[parameterIndex - 1], driverType)) {
-                throw new SqlException(logWriter_, "The jdbcType " + jdbcType + " does not match between the setter method and " +
-                        "the registerOutParameter method.");
-            } else {
-                return; // don't bother guessing if the parameter was already registered
-            }
-        }
-        guessParameterMetaDataBasedOnSupportedDriverType(parameterIndex, jdbcType == java.sql.Types.BIGINT, driverType, scale);
-    }
 
     private void setParmModeForOutputParameter(int parameterIndex) {
         if (sqlxParmmode_[parameterIndex - 1] == java.sql.ParameterMetaData.parameterModeIn) {
@@ -775,23 +766,6 @@
         }
     }
 
-    // Only called when column meta data is not described, called by registerOutParameter methods.
-    public void guessOutputParameterMetaData(int parameterIndex,
-                                             int jdbcType,
-                                             int scale) throws SqlException {
-        setParmModeForOutputParameter(parameterIndex);
-        int driverType = getInternalTypeForGuessedOrRegisteredJdbcType(jdbcType);
-        if (isParameterModeGuessedAsAnInput(parameterIndex)) { // if input parameter has been set already
-            // Verify that "set" and "registered" types are compatible.
-            if (!isCompatibleDriverTypes(driverType, types_[parameterIndex - 1])) {
-                throw new SqlException(logWriter_, "The jdbcType does not match between the setter method and " +
-                        "the registerOutParameter method.");
-            }
-            // the registered type will take precedence over any previously guessed input "set" type
-        }
-        guessParameterMetaDataBasedOnSupportedDriverType(parameterIndex, jdbcType == java.sql.Types.BIGINT, driverType, scale);
-    }
-
     private boolean isCompatibleDriverTypes(int registeredType, int guessedInputType) {
         switch (registeredType) {
         case Types.CHAR:
@@ -850,153 +824,14 @@
             return Types.CLOB;
         case java.sql.Types.NULL:
         case java.sql.Types.OTHER:
-            throw new SqlException(logWriter_, "Jdbc type " + guessedOrRegisteredJdbcType + " not yet supported.");
-        default:
-            throw new SqlException(logWriter_, "Unrecognized jdbc type " + guessedOrRegisteredJdbcType);
-        }
-    }
-
-    private void guessParameterMetaDataBasedOnSupportedDriverType(int parameterIndex,
-                                                                  boolean isBigInt,
-                                                                  int driverType,
-                                                                  int scale) throws SqlException {
-        switch (driverType) {
-        case Types.SMALLINT:
-            guessParameterMetaData(parameterIndex, driverType, 2, 0, 0);
-            break;
-        case Types.INTEGER:
-            guessParameterMetaData(parameterIndex, driverType, 4, 0, 0);
-            break;
-        case Types.BIGINT:
-            guessParameterMetaData(parameterIndex, driverType, 8, 0, 0);
-            break;
-        case Types.REAL:
-            guessParameterMetaData(parameterIndex, driverType, 4, 0, 0);
-            break;
-        case Types.DOUBLE:
-            guessParameterMetaData(parameterIndex, driverType, 8, 0, 0);
-            break;
-        case Types.DECIMAL:
-            if (isBigInt) {
-                guessParameterMetaData(parameterIndex, driverType, 0, 19, 0);
-            } else {
-                guessParameterMetaData(parameterIndex, driverType, 0, 31, scale);
-            }
-            break;
-        case Types.DATE:
-            guessParameterMetaData(parameterIndex, driverType, 10, 0, 0);
-            break;
-        case Types.TIME:
-            guessParameterMetaData(parameterIndex, driverType, 8, 0, 0);
-            break;
-        case Types.TIMESTAMP:
-            guessParameterMetaData(parameterIndex, driverType, 26, 0, 0);
-            break;
-        case Types.CHAR:
-        case Types.VARCHAR:
-            guessParameterMetaData(parameterIndex, driverType, 32672, 0, 0);
-            break;
-        case Types.LONGVARCHAR:
-            guessParameterMetaData(parameterIndex, driverType, 32700, 0, 0);
-            break;
-        case Types.BINARY:
-        case Types.VARBINARY:
-            guessParameterMetaData(parameterIndex, driverType, 4000, 0, 0);
-            break;
-        case Types.LONGVARBINARY:
-            guessParameterMetaData(parameterIndex, driverType, 32700, 0, 0);
-            break;
-        case Types.BLOB:
-            // 32768 will cause 8004 for a null placeholder length (could hard code in NET layer)
-            guessParameterMetaData(parameterIndex, driverType, 32768, 0, 0);
-            break;
-        case Types.CLOB:
-            // 32768 will cause 8004 for a null placeholder length (could hard code in NET layer)
-            guessParameterMetaData(parameterIndex, driverType, 32768, 0, 0);
-            break;
-        default:
-            throw new SqlException(logWriter_, "Unrecognized driver type " + driverType);
-        }
-    }
-
-    // Only called when column meta data is not described
-    private void guessParameterMetaData(int parameterIndex,
-                                        int type,
-                                        int length,
-                                        int precision,
-                                        int scale) {
-        // Always guess that the column is nullable
-        nullable_[parameterIndex - 1] = true;
-        types_[parameterIndex - 1] = type;
-        sqlLength_[parameterIndex - 1] = length;
-        sqlPrecision_[parameterIndex - 1] = precision;
-        sqlScale_[parameterIndex - 1] = scale;
-        sqlType_[parameterIndex - 1] = mapDriverToSqlType(type, true);
-    }
-
-    int mapDriverToSqlType(int type, boolean nullable) {
-        int sqlType = 0;
-        switch (type) {
-        case JDBC30Translation.BOOLEAN:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NBOOLEAN;
-            break;
-        case java.sql.Types.SMALLINT:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NSMALL;
-            break;
-        case java.sql.Types.INTEGER:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NINTEGER;
-            break;
-        case java.sql.Types.BIGINT:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NBIGINT;
-            break;
-        case java.sql.Types.REAL:
-        case java.sql.Types.DOUBLE:
-        case java.sql.Types.FLOAT:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NFLOAT;
-            break;
-        case java.sql.Types.DATE:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NDATE;
-            break;
-        case java.sql.Types.TIME:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NTIME;
-            break;
-        case java.sql.Types.TIMESTAMP:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NTIMESTAMP;
-            break;
-        case java.sql.Types.CHAR:
-        case java.sql.Types.VARCHAR:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NVARCHAR;
-            break;
-        case java.sql.Types.LONGVARCHAR:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NLONG;
-            break;
-        case java.sql.Types.BINARY:
-        case java.sql.Types.VARBINARY:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NVARCHAR;
-            break;
-        case java.sql.Types.LONGVARBINARY:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NLONG;
-            break;
-        case java.sql.Types.NUMERIC:
-        case java.sql.Types.DECIMAL:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NDECIMAL;
-            break;
-        case java.sql.Types.BLOB:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NBLOB;
-            break;
-        case java.sql.Types.CLOB:
-            sqlType = DRDAConstants.DB2_SQLTYPE_NCLOB;
-            break;
+            throw new SqlException(logWriter_, 
+            		new MessageId (SQLState.UNSUPPORTED_TYPE));
         default:
-            break; // bug check
-        }
-        if (!nullable) {
-            sqlType--;
+            throw new SqlException(logWriter_, 
+            		new MessageId (SQLState.UNSUPPORTED_TYPE));
         }
-        return sqlType;
     }
 
-
     public void setLogWriter(LogWriter logWriter) {
         logWriter_ = logWriter;
     }
@@ -1065,7 +900,8 @@
                 return col + 1;
             }
         }
-        throw new SqlException(logWriter_, "Invalid argument: unknown column name " + columnName);
+        throw new SqlException(logWriter_, 
+        		new MessageId (SQLState.INVALID_COLUMN_NAME), columnName);
     }
 
     // assign ordinal position as the column name if null.

Modified: db/derby/code/trunk/java/client/org/apache/derby/loc/clientmessages_en.properties
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/client/org/apache/derby/loc/clientmessages_en.properties?rev=391139&r1=391138&r2=391139&view=diff
==============================================================================
--- db/derby/code/trunk/java/client/org/apache/derby/loc/clientmessages_en.properties (original)
+++ db/derby/code/trunk/java/client/org/apache/derby/loc/clientmessages_en.properties Mon Apr  3 13:19:57 2006
@@ -70,11 +70,7 @@
 XN056.S=Clob object is too large
 XN057.S=Invalid position {0}
 XN058.S=Invalid offset {0}
-XN059.S=Unsupported Type
-XN060.S=Unregistered column type
-XN061.S=The jdbcType {0} does not match between the setter method and the registerOutParameter method.
-XN062.S=Unrecognized jdbc type {0}
-XN063.S=Unrecognized driver type {0}
+XN059.S=Unsupported type.
 XN064.S=An attempt to execute a privileged action failed.
 XN065.S=A resource bundle could not be found in the {0} package for {1}
 XN067.S=Cannot rollback or release a savepoint that was not created by this connection.

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=391139&r1=391138&r2=391139&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 Mon Apr  3 13:19:57 2006
@@ -1558,10 +1558,6 @@
     String INVALID_POSITION                                         = "XN057.S";
     String INVALID_OFFSET                                           = "XN058.S";
     String UNSUPPORTED_TYPE                                         = "XN059.S";
-    String UNREGISTERED_COLUMN_TYPE                                 = "XN060.S";
-    String TYPE_MISMATH_WITH_REG_TYPE                               = "XN061.S";
-    String BAD_JDBC_TYPE                                            = "XN062.S";
-    String BAD_DRIVER_TYPE                                          = "XN063.S";
     String ERROR_PRIVILEGED_ACTION                                  = "XN064.S";
     String MISSING_RESOURCE_BUNDLE                                  = "XN065.S";
     String SAVEPOINT_NOT_CREATED_BY_CONNECTION                      = "XN067.S";

Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/parameterMetaDataJdbc30.out
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/parameterMetaDataJdbc30.out?rev=391139&r1=391138&r2=391139&view=diff
==============================================================================
--- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/parameterMetaDataJdbc30.out (original)
+++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/master/DerbyNetClient/parameterMetaDataJdbc30.out Mon Apr  3 13:19:57 2006
@@ -155,11 +155,11 @@
 parameter getParameterClassName java.lang.Integer
 parameter getParameterMode PARAMETER_MODE_IN
 PASS -- expected exception
-SQLSTATE(null): SQL Exception: Invalid argument: column index -1 is out of range.
+SQLSTATE(XCL14): SQL Exception: The column position '-1' is out of range.  The number of columns for this ResultSet is '1'.
 PASS -- expected exception
-SQLSTATE(null): SQL Exception: Invalid argument: column index 0 is out of range.
+SQLSTATE(XCL14): SQL Exception: The column position '0' is out of range.  The number of columns for this ResultSet is '1'.
 PASS -- expected exception
-SQLSTATE(null): SQL Exception: Invalid argument: column index 2 is out of range.
+SQLSTATE(XCL14): SQL Exception: The column position '2' is out of range.  The number of columns for this ResultSet is '1'.
 test: no parameter for the statement and then do getParameterMetaData()
 parameters count for prepared statement is 0
 test: the scale returned should be the one set by registerOutParameter

Modified: db/derby/code/trunk/tools/testing/i18nTestGenerator/genClient2.sed
URL: http://svn.apache.org/viewcvs/db/derby/code/trunk/tools/testing/i18nTestGenerator/genClient2.sed?rev=391139&r1=391138&r2=391139&view=diff
==============================================================================
--- db/derby/code/trunk/tools/testing/i18nTestGenerator/genClient2.sed (original)
+++ db/derby/code/trunk/tools/testing/i18nTestGenerator/genClient2.sed Mon Apr  3 13:19:57 2006
@@ -40,6 +40,7 @@
 s/e.getClass().getName()/"exceptionClassName"/g
 s/[[:space:]]sourceType/"sourceType"/g
 s/[[:space:]]targetType/ "targetType"/g
+s/[[:space:]]columnName/ "columnName"/g
 
 #
 # Subsitute Long and Integer params with 0 as a default