public class PgResultSetMetaData extends Object implements ResultSetMetaData, PGResultSetMetaData
Modifier and Type | Field and Description |
---|---|
protected BaseConnection |
connection |
protected Field[] |
fields |
columnNoNulls, columnNullable, columnNullableUnknown
Constructor and Description |
---|
PgResultSetMetaData(BaseConnection connection,
Field[] fields)
Initialise for a result with a tuple set and a field descriptor set
|
Modifier and Type | Method and Description |
---|---|
String |
getBaseColumnName(int column)
Returns the underlying column name of a query result, or "" if it is unable to be determined.
|
String |
getBaseSchemaName(int column)
Returns the underlying schema name of query result, or "" if it is unable to be determined.
|
String |
getBaseTableName(int column)
Returns the underlying table name of query result, or "" if it is unable to be determined.
|
String |
getCatalogName(int column) |
String |
getColumnClassName(int column) |
int |
getColumnCount() |
int |
getColumnDisplaySize(int column) |
String |
getColumnLabel(int column) |
String |
getColumnName(int column) |
int |
getColumnType(int column) |
String |
getColumnTypeName(int column) |
protected Field |
getField(int columnIndex)
For several routines in this package, we need to convert a columnIndex into a Field[]
descriptor.
|
int |
getFormat(int column)
Is a column Text or Binary?
|
protected @Nullable String |
getPGType(int columnIndex) |
int |
getPrecision(int column) |
int |
getScale(int column) |
String |
getSchemaName(int column) |
protected int |
getSQLType(int columnIndex) |
String |
getTableName(int column) |
boolean |
isAutoIncrement(int column) |
boolean |
isCaseSensitive(int column) |
boolean |
isCurrency(int column) |
boolean |
isDefinitelyWritable(int column) |
int |
isNullable(int column) |
boolean |
isReadOnly(int column) |
boolean |
isSearchable(int column) |
boolean |
isSigned(int column) |
boolean |
isWrapperFor(Class<?> iface) |
boolean |
isWritable(int column) |
<T> T |
unwrap(Class<T> iface) |
protected final BaseConnection connection
protected final Field[] fields
public PgResultSetMetaData(BaseConnection connection, Field[] fields)
connection
- the connection to retrieve metadatafields
- the array of field descriptorspublic int getColumnCount() throws SQLException
getColumnCount
in interface ResultSetMetaData
SQLException
public boolean isAutoIncrement(int column) throws SQLException
It is believed that PostgreSQL does not support this feature.
isAutoIncrement
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic boolean isCaseSensitive(int column) throws SQLException
Does a column's case matter? ASSUMPTION: Any field that is not obviously case insensitive is assumed to be case sensitive
isCaseSensitive
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic boolean isSearchable(int column) throws SQLException
Can the column be used in a WHERE clause? Basically for this, I split the functions into two types: recognised types (which are always useable), and OTHER types (which may or may not be useable). The OTHER types, for now, I will assume they are useable. We should really query the catalog to see if they are useable.
isSearchable
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic boolean isCurrency(int column) throws SQLException
Is the column a cash value? 6.1 introduced the cash/money type, which haven't been incorporated as of 970414, so I just check the type name for both 'cash' and 'money'
isCurrency
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic int isNullable(int column) throws SQLException
isNullable
in interface ResultSetMetaData
SQLException
public boolean isSigned(int column) throws SQLException
Is the column a signed number? In PostgreSQL, all numbers are signed, so this is trivial. However, strings are not signed (duh!)
isSigned
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic int getColumnDisplaySize(int column) throws SQLException
getColumnDisplaySize
in interface ResultSetMetaData
SQLException
public String getColumnLabel(int column) throws SQLException
getColumnLabel
in interface ResultSetMetaData
SQLException
public String getColumnName(int column) throws SQLException
getColumnName
in interface ResultSetMetaData
SQLException
public String getBaseColumnName(int column) throws SQLException
PGResultSetMetaData
getBaseColumnName
in interface PGResultSetMetaData
column
- column position (1-based)SQLException
- if something wrong happenspublic String getSchemaName(int column) throws SQLException
getSchemaName
in interface ResultSetMetaData
SQLException
public String getBaseSchemaName(int column) throws SQLException
PGResultSetMetaData
getBaseSchemaName
in interface PGResultSetMetaData
column
- column position (1-based)SQLException
- if something wrong happenspublic int getPrecision(int column) throws SQLException
getPrecision
in interface ResultSetMetaData
SQLException
public int getScale(int column) throws SQLException
getScale
in interface ResultSetMetaData
SQLException
public String getTableName(int column) throws SQLException
getTableName
in interface ResultSetMetaData
SQLException
public String getBaseTableName(int column) throws SQLException
PGResultSetMetaData
getBaseTableName
in interface PGResultSetMetaData
column
- column position (1-based)SQLException
- if something wrong happenspublic String getCatalogName(int column) throws SQLException
As with getSchemaName(), we can say that if getTableName() returns n/a, then we can too - otherwise, we need to work on it.
getCatalogName
in interface ResultSetMetaData
column
- the first column is 1, the second is 2...SQLException
- if a database access error occurspublic int getColumnType(int column) throws SQLException
getColumnType
in interface ResultSetMetaData
SQLException
public int getFormat(int column) throws SQLException
PGResultSetMetaData
getFormat
in interface PGResultSetMetaData
column
- column position (1-based)SQLException
- if something wrong happensField.BINARY_FORMAT
,
Field.TEXT_FORMAT
public String getColumnTypeName(int column) throws SQLException
getColumnTypeName
in interface ResultSetMetaData
SQLException
public boolean isReadOnly(int column) throws SQLException
In reality, we would have to check the GRANT/REVOKE stuff for this to be effective, and I haven't really looked into that yet, so this will get re-visited.
isReadOnly
in interface ResultSetMetaData
column
- the first column is 1, the second is 2, etc.*SQLException
- if a database access error occurspublic boolean isWritable(int column) throws SQLException
In reality have to check the GRANT/REVOKE stuff, which I haven't worked with as yet. However, if it isn't ReadOnly, then it is obviously writable.
isWritable
in interface ResultSetMetaData
column
- the first column is 1, the second is 2, etc.SQLException
- if a database access error occurspublic boolean isDefinitelyWritable(int column) throws SQLException
Hmmm...this is a bad one, since the two preceding functions have not been really defined. I cannot tell is the short answer. I thus return isWritable() just to give us an idea.
isDefinitelyWritable
in interface ResultSetMetaData
column
- the first column is 1, the second is 2, etc..SQLException
- if a database access error occursprotected Field getField(int columnIndex) throws SQLException
columnIndex
- the first column is 1, the second is 2...SQLException
- if a database access error occursprotected @Nullable String getPGType(int columnIndex) throws SQLException
SQLException
protected int getSQLType(int columnIndex) throws SQLException
SQLException
public String getColumnClassName(int column) throws SQLException
getColumnClassName
in interface ResultSetMetaData
SQLException
public boolean isWrapperFor(Class<?> iface) throws SQLException
isWrapperFor
in interface Wrapper
SQLException
public <T> T unwrap(Class<T> iface) throws SQLException
unwrap
in interface Wrapper
SQLException
Copyright © 1997-2020 PostgreSQL Global Development Group. All Rights Reserved.