mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
patch submitted by Jason Davies jason@netspade.com to improve ResultSetMetaData.getColumnClassName() support
This commit is contained in:
@ -935,9 +935,9 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
|
|||||||
switch (field.getSQLType())
|
switch (field.getSQLType())
|
||||||
{
|
{
|
||||||
case Types.BIT:
|
case Types.BIT:
|
||||||
return new Boolean(getBoolean(columnIndex));
|
return getBoolean(columnIndex) ? Boolean.TRUE : Boolean.FALSE;
|
||||||
case Types.SMALLINT:
|
case Types.SMALLINT:
|
||||||
return new Short((short)getInt(columnIndex));
|
return new Short(getShort(columnIndex));
|
||||||
case Types.INTEGER:
|
case Types.INTEGER:
|
||||||
return new Integer(getInt(columnIndex));
|
return new Integer(getInt(columnIndex));
|
||||||
case Types.BIGINT:
|
case Types.BIGINT:
|
||||||
|
@ -780,9 +780,9 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu
|
|||||||
switch (field.getSQLType())
|
switch (field.getSQLType())
|
||||||
{
|
{
|
||||||
case Types.BIT:
|
case Types.BIT:
|
||||||
return new Boolean(getBoolean(columnIndex));
|
return getBoolean(columnIndex) ? Boolean.TRUE : Boolean.FALSE;
|
||||||
case Types.SMALLINT:
|
case Types.SMALLINT:
|
||||||
return new Short((short)getInt(columnIndex));
|
return new Short(getShort(columnIndex));
|
||||||
case Types.INTEGER:
|
case Types.INTEGER:
|
||||||
return new Integer(getInt(columnIndex));
|
return new Integer(getInt(columnIndex));
|
||||||
case Types.BIGINT:
|
case Types.BIGINT:
|
||||||
|
@ -471,6 +471,21 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
|
|||||||
// ** JDBC 2 Extensions **
|
// ** JDBC 2 Extensions **
|
||||||
|
|
||||||
// This can hook into our PG_Object mechanism
|
// 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
|
public String getColumnClassName(int column) throws SQLException
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -505,34 +520,47 @@ public class ResultSetMetaData implements java.sql.ResultSetMetaData
|
|||||||
Types.TIMESTAMP,Types.TIMESTAMP
|
Types.TIMESTAMP,Types.TIMESTAMP
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int sql_type = getField(column).getSQLType();
|
Field field = getField(column);
|
||||||
|
int sql_type = field.getSQLType();
|
||||||
|
|
||||||
switch (sql_type)
|
switch (sql_type)
|
||||||
{
|
{
|
||||||
case Types.BIT:
|
case Types.BIT:
|
||||||
return("java.lang.Boolean");
|
return("java.lang.Boolean");
|
||||||
case Types.SMALLINT:
|
case Types.SMALLINT:
|
||||||
return("java.lang.Integer");
|
return("java.lang.Short");
|
||||||
case Types.INTEGER:
|
case Types.INTEGER:
|
||||||
return("java.lang.Integer");
|
return("java.lang.Integer");
|
||||||
case Types.BIGINT:
|
case Types.BIGINT:
|
||||||
return("java.lang.Long");
|
return("java.lang.Long");
|
||||||
case Types.NUMERIC:
|
case Types.NUMERIC:
|
||||||
return("java.math.BigDecimal");
|
return("java.math.BigDecimal");
|
||||||
case Types.REAL:
|
case Types.REAL:
|
||||||
return("java.lang.Float");
|
return("java.lang.Float");
|
||||||
case Types.DOUBLE:
|
case Types.DOUBLE:
|
||||||
return("java.lang.Double");
|
return("java.lang.Double");
|
||||||
case Types.CHAR:
|
case Types.CHAR:
|
||||||
case Types.VARCHAR:
|
case Types.VARCHAR:
|
||||||
return("java.lang.String");
|
return("java.lang.String");
|
||||||
case Types.DATE:
|
case Types.DATE:
|
||||||
case Types.TIME:
|
return("java.sql.Date");
|
||||||
case Types.TIMESTAMP:
|
case Types.TIME:
|
||||||
return("java.sql.Timestamp");
|
return("java.sql.Time");
|
||||||
default:
|
case Types.TIMESTAMP:
|
||||||
throw org.postgresql.Driver.notImplemented();
|
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");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user