Thread: ResultSet.getObject return type for smallint
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:
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