aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDave Cramer <davec@fastcrypt.com>2002-02-22 02:58:24 +0000
committerDave Cramer <davec@fastcrypt.com>2002-02-22 02:58:24 +0000
commit8c17e4e0fca4fdbb2683c5e2674728bb6574145c (patch)
treec1ee16c4f866df8439ea42fcf5355ba4ccddba56 /src
parentdeaad93462febc938230cff510f17780bf619862 (diff)
downloadpostgresql-8c17e4e0fca4fdbb2683c5e2674728bb6574145c.tar.gz
postgresql-8c17e4e0fca4fdbb2683c5e2674728bb6574145c.zip
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. auther Ed Yu
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java62
1 files changed, 60 insertions, 2 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java
index 7539a91c159..709fe1954ba 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSetMetaData.java
@@ -473,8 +473,66 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
// This can hook into our PG_Object mechanism
public String getColumnClassName(int column) throws SQLException
{
- throw org.postgresql.Driver.notImplemented();
- }
+ /*
+ 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();
+ }
+
}