]> granicus.if.org Git - postgresql/commitdiff
patch submitted by Jason Davies jason@netspade.com to improve ResultSetMetaData.getCo...
authorBarry Lind <barry@xythos.com>
Mon, 24 Jun 2002 05:09:29 +0000 (05:09 +0000)
committerBarry Lind <barry@xythos.com>
Mon, 24 Jun 2002 05:09:29 +0000 (05:09 +0000)
src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java
src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java

index 11b3e70a56cbc3ac02e309ba5ced58a7bd8537a3..1d640cebe49543903641d97876793e21ceb4ac94 100644 (file)
@@ -935,9 +935,9 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
                switch (field.getSQLType())
                {
                        case Types.BIT:
-                               return new Boolean(getBoolean(columnIndex));
+                               return getBoolean(columnIndex) ? Boolean.TRUE : Boolean.FALSE;
                        case Types.SMALLINT:
-                               return new Short((short)getInt(columnIndex));
+                               return new Short(getShort(columnIndex));
                        case Types.INTEGER:
                                return new Integer(getInt(columnIndex));
                        case Types.BIGINT:
index e30849bbe6b96935e8fe725c512b2412d6dd655f..43c5e3d2d861cdf742a6230cb3e7e23810bab0d1 100644 (file)
@@ -780,9 +780,9 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
                switch (field.getSQLType())
                {
                        case Types.BIT:
-                               return new Boolean(getBoolean(columnIndex));
+                               return getBoolean(columnIndex) ? Boolean.TRUE : Boolean.FALSE;
                        case Types.SMALLINT:
-                               return new Short((short)getInt(columnIndex));
+                               return new Short(getShort(columnIndex));
                        case Types.INTEGER:
                                return new Integer(getInt(columnIndex));
                        case Types.BIGINT:
index 6ff6094b64df0e8d3d4f458343c6d8f89896228c..91ee4b306beee0b540786bdba928af0cca44f981 100644 (file)
@@ -471,6 +471,21 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
        // ** JDBC 2 Extensions **
 
        // This can hook into our PG_Object mechanism
+       /**
+        * Returns the fully-qualified name of the Java class whose instances 
+        * are manufactured if the method <code>ResultSet.getObject</code>
+        * is called to retrieve a value from the column.
+        * 
+        * <code>ResultSet.getObject</code> may return a subclass of the class
+        * returned by this method.
+        *
+        * @param column the first column is 1, the second is 2, ...
+        * @return the fully-qualified name of the class in the Java programming
+        *         language that would be used by the method
+        *         <code>ResultSet.getObject</code> to retrieve the value in the specified
+        *         column. This is the class name used for custom mapping.
+        * @exception SQLException if a database access error occurs
+        */
        public String getColumnClassName(int column) throws SQLException
        {
  /*
@@ -505,34 +520,47 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
      Types.TIMESTAMP,Types.TIMESTAMP
  */
 
-       int sql_type = getField(column).getSQLType();
-
-       switch (sql_type)
-        {
-                       case Types.BIT:
-                       return("java.lang.Boolean");
-                       case Types.SMALLINT:
-                       return("java.lang.Integer");
-                       case Types.INTEGER:
-                       return("java.lang.Integer");
-                       case Types.BIGINT:
-                       return("java.lang.Long");
-               case Types.NUMERIC:
-                       return("java.math.BigDecimal");
-                       case Types.REAL:
-                       return("java.lang.Float");
-                       case Types.DOUBLE:
-                       return("java.lang.Double");
-                       case Types.CHAR:
-                       case Types.VARCHAR:
-                       return("java.lang.String");
-                       case Types.DATE:
-                       case Types.TIME:
-                       case Types.TIMESTAMP:
-                       return("java.sql.Timestamp");
-                       default:
-                       throw org.postgresql.Driver.notImplemented();
-       }
-   }       
+               Field field = getField(column);
+               int sql_type = field.getSQLType();
+
+               switch (sql_type)
+               {
+                       case Types.BIT:
+                               return("java.lang.Boolean");
+                       case Types.SMALLINT:
+                               return("java.lang.Short");
+                       case Types.INTEGER:
+                               return("java.lang.Integer");
+                       case Types.BIGINT:
+                               return("java.lang.Long");
+                       case Types.NUMERIC:
+                               return("java.math.BigDecimal");
+                       case Types.REAL:
+                               return("java.lang.Float");
+                       case Types.DOUBLE:
+                               return("java.lang.Double");
+                       case Types.CHAR:
+                       case Types.VARCHAR:
+                               return("java.lang.String");
+                       case Types.DATE:
+                               return("java.sql.Date");
+                       case Types.TIME:
+                               return("java.sql.Time");
+                       case Types.TIMESTAMP:
+                               return("java.sql.Timestamp");
+                       case Types.BINARY:
+                       case Types.VARBINARY:
+                               return("java.sql.Object");
+                       case Types.ARRAY:
+                               return("java.sql.Array");
+                       default:
+                               String type = field.getPGType();
+                               if ("unknown".equals(type))
+                               {
+                                       return("java.lang.String");
+                               }
+                               return("java.lang.Object");
+               }
+       }
 }