Thread: Patches for ResultSetMetaData.java for Postgresql 7.1.3 (sorry, here is the diff -c with explanations)
Patches for ResultSetMetaData.java for Postgresql 7.1.3 (sorry, here is the diff -c with explanations)
From
"Ed Yu"
Date:
This patch fixes the exception thrown to inform the user the method getColumnClassName(int) is not implemented. This will futher fixes method ResultSet.getObject(int) since it requires the getColumnClassName(int) method to return the proper java class used to map the database column. *** ResultSetMetaData.java.orig Mon Apr 17 16:07:51 2000 --- ResultSetMetaData.java Mon Dec 17 22:26:24 2001 *************** *** 448,454 **** --- 448,513 ---- // This can hook into our PG_Object mechanism public String getColumnClassName(int column) throws SQLException { + /* + The following data type mapping came from ../Field.java. + + "int2", + "int4","oid", + "int8", + "cash","money", + "numeric", + "float4", + "float8", + "bpchar","char","char2","char4","char8","char16", + "varchar","text","name","filename", + "bool", + "date", + "time", + "abstime","timestamp" + + Types.SMALLINT, + Types.INTEGER,Types.INTEGER, + Types.BIGINT, + Types.DOUBLE,Types.DOUBLE, + Types.NUMERIC, + Types.REAL, + Types.DOUBLE, + Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR, + Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR, + Types.BIT, + Types.DATE, + Types.TIME, + 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(); + } } }
Saved for 7.3: http://candle.pha.pa.us/cgi-bin/pgpatches2 --------------------------------------------------------------------------- Ed Yu wrote: > This patch fixes the exception thrown to inform the user the method > getColumnClassName(int) is not implemented. This will futher fixes method > ResultSet.getObject(int) since it requires the getColumnClassName(int) > method to return the proper java class used to map the database column. > > *** ResultSetMetaData.java.orig Mon Apr 17 16:07:51 2000 > --- ResultSetMetaData.java Mon Dec 17 22:26:24 2001 > *************** > *** 448,454 **** > --- 448,513 ---- > // This can hook into our PG_Object mechanism > public String getColumnClassName(int column) throws SQLException > { > + /* > + The following data type mapping came from ../Field.java. > + > + "int2", > + "int4","oid", > + "int8", > + "cash","money", > + "numeric", > + "float4", > + "float8", > + "bpchar","char","char2","char4","char8","char16", > + "varchar","text","name","filename", > + "bool", > + "date", > + "time", > + "abstime","timestamp" > + > + Types.SMALLINT, > + Types.INTEGER,Types.INTEGER, > + Types.BIGINT, > + Types.DOUBLE,Types.DOUBLE, > + Types.NUMERIC, > + Types.REAL, > + Types.DOUBLE, > + Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR,Types.CHAR, > + Types.VARCHAR,Types.VARCHAR,Types.VARCHAR,Types.VARCHAR, > + Types.BIT, > + Types.DATE, > + Types.TIME, > + 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(); > + } > } > > } > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly > -- Bruce Momjian | http://candle.pha.pa.us pgman@candle.pha.pa.us | (610) 853-3000 + If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill, Pennsylvania 19026