- if(type_name.equals(types[i]))
- sql_type=typei[i];
- return sql_type;
+ return name;
}
/**
- * This returns the oid for a field of a given data type
- * @param type_name PostgreSQL type name
- * @return PostgreSQL oid value for a field of this type
+ * @return the length of this Field's data type
*/
- public int getOID( String type_name ) throws SQLException
+ public int getLength()
{
- int oid = -1;
- if(type_name != null) {
- Integer oidValue = (Integer) oidCache.get( type_name );
- if( oidValue != null )
- oid = oidValue.intValue();
- else {
- // it's not in the cache, so perform a query, and add the result to the cache
- ResultSet result = (org.postgresql.ResultSet)conn.ExecSQL("select oid from pg_type where typname='"
- + type_name + "'");
- if (result.getColumnCount() != 1 || result.getTupleCount() != 1)
- throw new PSQLException("postgresql.unexpected");
- result.next();
- oid = Integer.parseInt(result.getString(1));
- oidCache.put( type_name, new Integer(oid) );
- result.close();
- }
- }
- return oid;
+ return length;
}
/**
- * This table holds the org.postgresql names for the types supported.
- * Any types that map to Types.OTHER (eg POINT) don't go into this table.
- * They default automatically to Types.OTHER
- *
- * Note: This must be in the same order as below.
- *
- * Tip: keep these grouped together by the Types. value
- */
- private static final String types[] = {
- "int2",
- "int4","oid",
- "int8",
- "cash","money",
- "numeric",
- "float4",
- "float8",
- "bpchar","char","char2","char4","char8","char16",
- "varchar","text","name","filename",
- "bool",
- "date",
- "time",
- "abstime","timestamp",
- "_bool", "_char", "_int2", "_int4", "_text", "_oid", "_varchar", "_int8",
- "_float4", "_float8", "_abstime", "_date", "_time", "_timestamp", "_numeric"
- };
-
- /**
- * This table holds the JDBC type for each entry above.
+ * We also need to get the PG type name as returned by the back end.
*
- * Note: This must be in the same order as above
- *
- * Tip: keep these grouped together by the Types. value
+ * @return the String representation of the PG type of this field
+ * @exception SQLException if a database access error occurs
*/
- private static final int typei[] = {
- 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,
- Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY,
- Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY, Types.ARRAY
- };
+ public String getPGType() throws SQLException
+ {
+ return conn.getPGType(oid);
+ }
/**
- * We also need to get the type name as returned by the back end.
- * This is held in type_name AFTER a call to getSQLType. Since
- * we get this information within getSQLType (if it isn't already
- * done), we can just call getSQLType and throw away the result.
+ * We also need to get the java.sql.types type.
*
- * @return the String representation of the type of this field
+ * @return the int representation of the java.sql.types type of this field
* @exception SQLException if a database access error occurs
*/
- public String getTypeName() throws SQLException
+ public int getSQLType() throws SQLException
{
- int sql = getSQLType();
- return type_name;
+ return conn.getSQLType(oid);
}
+
}