Class EmbedResultSetMetaData

java.lang.Object
org.apache.derby.impl.jdbc.EmbedResultSetMetaData
All Implemented Interfaces:
ResultSetMetaData, Wrapper

public class EmbedResultSetMetaData extends Object implements ResultSetMetaData
A ResultSetMetaData object can be used to find out about the types and properties of the columns in a ResultSet.

We take the (Derby) ResultDescription and examine it, to return the appropriate information.

This class can be used outside of this package to convert a ResultDescription into a ResultSetMetaData object.

EmbedResultSetMetaData objects are shared across multiple threads by being stored in the ResultDescription for a compiled plan. If the required api for ResultSetMetaData ever changes so that it has a close() method, a getConnection() method or any other Connection or ResultSet specific method then this sharing must be removed.

  • Field Details

  • Constructor Details

  • Method Details

    • getColumnCount

      public final int getColumnCount()
      What's the number of columns in the ResultSet?
      Specified by:
      getColumnCount in interface ResultSetMetaData
      Returns:
      the number
    • isAutoIncrement

      public final boolean isAutoIncrement(int column) throws SQLException
      Is the column automatically numbered, thus read-only?
      Specified by:
      isAutoIncrement in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • isCaseSensitive

      public final boolean isCaseSensitive(int column) throws SQLException
      Does a column's case matter?
      Specified by:
      isCaseSensitive in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • isSearchable

      public final boolean isSearchable(int column) throws SQLException
      Can the column be used in a where clause?
      Specified by:
      isSearchable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • isCurrency

      public final boolean isCurrency(int column) throws SQLException
      Is the column a cash value? Always returns false since there are no currency data types in Derby.
      Specified by:
      isCurrency in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      false, always
      Throws:
      SQLException - thrown on failure
    • isNullable

      public final int isNullable(int column) throws SQLException
      Can you put a NULL in this column?
      Specified by:
      isNullable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      columnNoNulls, columnNullable or columnNullableUnknown
      Throws:
      SQLException - thrown on failure
    • isSigned

      public final boolean isSigned(int column) throws SQLException
      Is the column a signed number?
      Specified by:
      isSigned in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • getColumnDisplaySize

      public final int getColumnDisplaySize(int column) throws SQLException
      What's the column's normal max width in chars?
      Specified by:
      getColumnDisplaySize in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      max width
      Throws:
      SQLException - thrown on failure
    • getColumnLabel

      public final String getColumnLabel(int column) throws SQLException
      What's the suggested column title for use in printouts and displays?
      Specified by:
      getColumnLabel in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • getColumnName

      public final String getColumnName(int column) throws SQLException
      What's a column's name?
      Specified by:
      getColumnName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      column name
      Throws:
      SQLException - thrown on failure
    • getSchemaName

      public final String getSchemaName(int column) throws SQLException
      What's a column's table's schema?
      Specified by:
      getSchemaName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      schema name or "" if not applicable
      Throws:
      SQLException - thrown on failure
    • getPrecision

      public final int getPrecision(int column) throws SQLException
      What's a column's number of decimal digits?
      Specified by:
      getPrecision in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      precision
      Throws:
      SQLException - thrown on failure
    • getScale

      public final int getScale(int column) throws SQLException
      What's a column's number of digits to right of the decimal point?
      Specified by:
      getScale in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      scale
      Throws:
      SQLException - thrown on failure
    • getTableName

      public final String getTableName(int column) throws SQLException
      What's a column's table name?
      Specified by:
      getTableName in interface ResultSetMetaData
      Returns:
      table name or "" if not applicable
      Throws:
      SQLException - thrown on failure
    • getCatalogName

      public final String getCatalogName(int column) throws SQLException
      What's a column's table's catalog name?
      Specified by:
      getCatalogName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      column name or "" if not applicable.
      Throws:
      SQLException - thrown on failure
    • getColumnType

      public final int getColumnType(int column) throws SQLException
      What's a column's SQL type?
      Specified by:
      getColumnType in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      SQL type
      Throws:
      SQLException - thrown on failure
      See Also:
    • getColumnTypeName

      public final String getColumnTypeName(int column) throws SQLException
      What's a column's data source specific type name?
      Specified by:
      getColumnTypeName in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      type name
      Throws:
      SQLException - thrown on failure
    • isReadOnly

      public final boolean isReadOnly(int column) throws SQLException
      Is a column definitely not writable?
      Specified by:
      isReadOnly in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • isWritable

      public final boolean isWritable(int column) throws SQLException
      Is it possible for a write on the column to succeed?
      Specified by:
      isWritable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • isDefinitelyWritable

      public final boolean isDefinitelyWritable(int column) throws SQLException
      Will a write on the column definitely succeed?
      Specified by:
      isDefinitelyWritable in interface ResultSetMetaData
      Parameters:
      column - the first column is 1, the second is 2, ...
      Returns:
      true if so
      Throws:
      SQLException - thrown on failure
    • validColumnNumber

      private void validColumnNumber(int column) throws SQLException
      Throws:
      SQLException
    • getColumnTypeDescriptor

      private DataTypeDescriptor getColumnTypeDescriptor(int column) throws SQLException
      Throws:
      SQLException
    • getColumnClassName

      public final String getColumnClassName(int column) throws SQLException
      JDBC 2.0

      Return the fully qualified name of the Java class whose instances are manufactured if ResultSet.getObject() is called to retrieve a value from the column. ResultSet.getObject() may return a subClass of the class returned by this method.

      Specified by:
      getColumnClassName in interface ResultSetMetaData
      Throws:
      SQLException - Feature not inplemented for now.
    • getResultColumnDescriptor

      public static ResultColumnDescriptor getResultColumnDescriptor(String name, int jdcbTypeId, boolean nullable)
    • getResultColumnDescriptor

      public static ResultColumnDescriptor getResultColumnDescriptor(String name, int jdcbTypeId, boolean nullable, int length)
    • getResultColumnDescriptor

      public static ResultColumnDescriptor getResultColumnDescriptor(String name, DataTypeDescriptor dtd)
    • isWrapperFor

      public final boolean isWrapperFor(Class<?> iface)
      Returns whether or not this instance implements the specified interface.
      Specified by:
      isWrapperFor in interface Wrapper
      Parameters:
      iface - the interface to check for
      Returns:
      true if this implements the interface
    • unwrap

      public final <T> T unwrap(Class<T> iface) throws SQLException
      Returns this if this class implements the interface.
      Specified by:
      unwrap in interface Wrapper
      Parameters:
      iface - the interface
      Returns:
      an object that implements the interface
      Throws:
      SQLException - if no object is found that implements the interface