Class GenericColumnDescriptor

java.lang.Object
org.apache.derby.impl.sql.GenericColumnDescriptor
All Implemented Interfaces:
Externalizable, Serializable, Formatable, TypedFormat, ResultColumnDescriptor

public final class GenericColumnDescriptor extends Object implements ResultColumnDescriptor, Formatable
This is a stripped down implementation of a column descriptor that is intended for generic use. It can be seralized and attached to plans.
See Also:
  • Field Details

    • name

      private String name
      This class implements Formatable. That means that it can write itself to and from a formatted stream. If you add more fields to this class, make sure that you also write/read them with the writeExternal()/readExternal() methods. If, inbetween releases, you add more fields to this class, then you should bump the version number emitted by the getTypeFormatId() method.
    • schemaName

      private String schemaName
    • tableName

      private String tableName
    • columnPos

      private int columnPos
    • type

      private DataTypeDescriptor type
    • isAutoincrement

      private boolean isAutoincrement
    • updatableByCursor

      private boolean updatableByCursor
    • hasGenerationClause

      private boolean hasGenerationClause
  • Constructor Details

    • GenericColumnDescriptor

      public GenericColumnDescriptor()
      Niladic constructor for Formatable
    • GenericColumnDescriptor

      public GenericColumnDescriptor(String name, DataTypeDescriptor type)
    • GenericColumnDescriptor

      public GenericColumnDescriptor(ResultColumnDescriptor rcd)
      This constructor is used to build a generic (and formatable) ColumnDescriptor. The idea is that it can be passed a ColumnDescriptor from a query tree and convert it to something that can be used anywhere.
      Parameters:
      rcd - the ResultColumnDescriptor
  • Method Details

    • getType

      public DataTypeDescriptor getType()
      Returns a DataTypeDescriptor for the column. This DataTypeDescriptor will not represent an actual value, it will only represent the type that all values in the column will have.
      Specified by:
      getType in interface ResultColumnDescriptor
      Returns:
      A DataTypeDescriptor describing the type of the column.
    • getName

      public String getName()
      Returns the name of the Column.
      Specified by:
      getName in interface ResultColumnDescriptor
      Returns:
      A String containing the name of the column.
    • getSourceSchemaName

      public String getSourceSchemaName()
      Get the name of the schema for the Column's base table, if any. Following example queries will all return APP (assuming user is in schema APP) select t.a from t select b.a from t as b select app.t.a from t
      Specified by:
      getSourceSchemaName in interface ResultColumnDescriptor
      Returns:
      A String containing the name of the schema of the Column's table. If the column is not in a schema (i.e. is a derived column), it returns NULL.
    • getSourceTableName

      public String getSourceTableName()
      Get the name of the underlying(base) table this column comes from, if any. Following example queries will all return T select a from t select b.a from t as b select t.a from t
      Specified by:
      getSourceTableName in interface ResultColumnDescriptor
      Returns:
      A String containing the name of the Column's base table. If the column is not in a table (i.e. is a derived column), it returns NULL.
    • getColumnPosition

      public int getColumnPosition()
      Get the position of the Column. NOTE - position is 1-based.
      Specified by:
      getColumnPosition in interface ResultColumnDescriptor
      Returns:
      An int containing the position of the Column within the table.
    • isAutoincrement

      public boolean isAutoincrement()
      Description copied from interface: ResultColumnDescriptor
      Tell us if the column is an autoincrement column or not.
      Specified by:
      isAutoincrement in interface ResultColumnDescriptor
      Returns:
      TRUE, if the column is a base column of a table and is an autoincrement column.
    • updatableByCursor

      public boolean updatableByCursor()
      Description copied from interface: ResultColumnDescriptor
      Return true if the column is wirtable by a positioned update.
      Specified by:
      updatableByCursor in interface ResultColumnDescriptor
      Returns:
      TRUE, if the column is a base column of a table and is writable by a positioned update.
    • hasGenerationClause

      public boolean hasGenerationClause()
      Description copied from interface: ResultColumnDescriptor
      Return true if this result column represents a generated column.
      Specified by:
      hasGenerationClause in interface ResultColumnDescriptor
    • writeExternal

      public void writeExternal(ObjectOutput out) throws IOException
      Write this object out
      Specified by:
      writeExternal in interface Externalizable
      Parameters:
      out - write bytes here
      Throws:
      IOException - thrown on error
    • readExternal

      public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
      Read this object from a stream of stored objects.
      Specified by:
      readExternal in interface Externalizable
      Parameters:
      in - read this.
      Throws:
      IOException - thrown on error
      ClassNotFoundException - thrown on error
    • getTypeFormatId

      public int getTypeFormatId()
      Get the formatID which corresponds to this class.
      Specified by:
      getTypeFormatId in interface TypedFormat
      Returns:
      the formatID of this class
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getStoredDataTypeDescriptor

      private DataTypeDescriptor getStoredDataTypeDescriptor(Object o)
      When retrieving a DataTypeDescriptor, it might just be a regular DataTypeDescriptor or may be an OldRoutineType, as used for Routine parameters and return values prior to DERBY-2775. If it is not a regular DataTypeDescriptor, it must be an OldRoutineType, so convert it to a DataTypeDescriptor DERBY-4913
      Parameters:
      o - object as obtained by fh.get("type") in readExternal
      Returns:
      DataTypeDescriptor