mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +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