Thread: ResultSet.getObject return type for smallint

ResultSet.getObject return type for smallint

From
"Kevin Grittner"
Date:
According to Appendix B of the JDBC spec, ResultSet.getObject should use the mapping shown in table B-3 to determine the object class returned.  Table B-3 shows SMALLINT mapping to Integer.  In postgresql-jdbc-8.0-311 a Short is returned instead, which is causing problems for our software.  It looks like a one-line change will fix this -- in the org.postgresql.jdbc2.AbstractJdbc2ResultSet.internalGetObject method.
 
Index: AbstractJdbc2ResultSet.java
===================================================================
RCS file: /usr/local/cvsroot/pgjdbc/pgjdbc/org/postgresql/jdbc2/AbstractJdbc2ResultSet.java,v
retrieving revision 1.74
diff -u -r1.74 AbstractJdbc2ResultSet.java
--- AbstractJdbc2ResultSet.java8 May 2005 23:50:56 -00001.74
+++ AbstractJdbc2ResultSet.java7 Jun 2005 22:53:02 -0000
@@ -115,7 +115,7 @@
         case Types.BIT:
             return getBoolean(columnIndex) ? Boolean.TRUE : Boolean.FALSE;
         case Types.SMALLINT:
-            return new Short(getShort(columnIndex));
+            return new Integer(getShort(columnIndex));
         case Types.INTEGER:
             return new Integer(getInt(columnIndex));
         case Types.BIGINT:
 

Re: ResultSet.getObject return type for smallint

From
Oliver Jowett
Date:
Kevin Grittner wrote:
>
> According to Appendix B of the JDBC spec, ResultSet.getObject should use
> the mapping shown in table B-3 to determine the object class returned.
>  Table B-3 shows SMALLINT mapping to Integer.  In
> postgresql-jdbc-8.0-311 a Short is returned instead, which is causing
> problems for our software.  It looks like a one-line change will fix
> this -- in the
> org.postgresql.jdbc2.AbstractJdbc2ResultSet.internalGetObject method.

Thanks for the report. I've applied a fix for this, plus support for
various other types in the mapping table that getObject() didn't handle
at all (BOOLEAN, TINYINT, DECIMAL, LONGVARCHAR, LONGVARBINARY, CLOB,
BLOB) to CVS HEAD and the stable 8.0 branch.

-O