Package org.apache.derby.impl.sql
Class GenericColumnDescriptor
- java.lang.Object
-
- org.apache.derby.impl.sql.GenericColumnDescriptor
-
- All Implemented Interfaces:
java.io.Externalizable,java.io.Serializable,Formatable,TypedFormat,ResultColumnDescriptor
public final class GenericColumnDescriptor extends java.lang.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:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description private intcolumnPosprivate booleanhasGenerationClauseprivate booleanisAutoincrementprivate java.lang.StringnameThis class implements Formatable.private java.lang.StringschemaNameprivate java.lang.StringtableNameprivate DataTypeDescriptortypeprivate booleanupdatableByCursor
-
Constructor Summary
Constructors Constructor Description GenericColumnDescriptor()Niladic constructor for FormatableGenericColumnDescriptor(java.lang.String name, DataTypeDescriptor type)GenericColumnDescriptor(ResultColumnDescriptor rcd)This constructor is used to build a generic (and formatable) ColumnDescriptor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intgetColumnPosition()Get the position of the Column.java.lang.StringgetName()Returns the name of the Column.java.lang.StringgetSourceSchemaName()Get the name of the schema for the Column's base table, if any.java.lang.StringgetSourceTableName()Get the name of the underlying(base) table this column comes from, if any.private DataTypeDescriptorgetStoredDataTypeDescriptor(java.lang.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.DataTypeDescriptorgetType()Returns a DataTypeDescriptor for the column.intgetTypeFormatId()Get the formatID which corresponds to this class.booleanhasGenerationClause()Return true if this result column represents a generated column.booleanisAutoincrement()Tell us if the column is an autoincrement column or not.voidreadExternal(java.io.ObjectInput in)Read this object from a stream of stored objects.java.lang.StringtoString()booleanupdatableByCursor()Return true if the column is wirtable by a positioned update.voidwriteExternal(java.io.ObjectOutput out)Write this object out
-
-
-
Field Detail
-
name
private java.lang.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 java.lang.String schemaName
-
tableName
private java.lang.String tableName
-
columnPos
private int columnPos
-
type
private DataTypeDescriptor type
-
isAutoincrement
private boolean isAutoincrement
-
updatableByCursor
private boolean updatableByCursor
-
hasGenerationClause
private boolean hasGenerationClause
-
-
Constructor Detail
-
GenericColumnDescriptor
public GenericColumnDescriptor()
Niladic constructor for Formatable
-
GenericColumnDescriptor
public GenericColumnDescriptor(java.lang.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 Detail
-
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:
getTypein interfaceResultColumnDescriptor- Returns:
- A DataTypeDescriptor describing the type of the column.
-
getName
public java.lang.String getName()
Returns the name of the Column.- Specified by:
getNamein interfaceResultColumnDescriptor- Returns:
- A String containing the name of the column.
-
getSourceSchemaName
public java.lang.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:
getSourceSchemaNamein interfaceResultColumnDescriptor- 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 java.lang.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:
getSourceTableNamein interfaceResultColumnDescriptor- 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:
getColumnPositionin interfaceResultColumnDescriptor- Returns:
- An int containing the position of the Column within the table.
-
isAutoincrement
public boolean isAutoincrement()
Description copied from interface:ResultColumnDescriptorTell us if the column is an autoincrement column or not.- Specified by:
isAutoincrementin interfaceResultColumnDescriptor- 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:ResultColumnDescriptorReturn true if the column is wirtable by a positioned update.- Specified by:
updatableByCursorin interfaceResultColumnDescriptor- 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:ResultColumnDescriptorReturn true if this result column represents a generated column.- Specified by:
hasGenerationClausein interfaceResultColumnDescriptor
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOExceptionWrite this object out- Specified by:
writeExternalin interfacejava.io.Externalizable- Parameters:
out- write bytes here- Throws:
java.io.IOException- thrown on error
-
readExternal
public void readExternal(java.io.ObjectInput in) throws java.io.IOException, java.lang.ClassNotFoundExceptionRead this object from a stream of stored objects.- Specified by:
readExternalin interfacejava.io.Externalizable- Parameters:
in- read this.- Throws:
java.io.IOException- thrown on errorjava.lang.ClassNotFoundException- thrown on error
-
getTypeFormatId
public int getTypeFormatId()
Get the formatID which corresponds to this class.- Specified by:
getTypeFormatIdin interfaceTypedFormat- Returns:
- the formatID of this class
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
getStoredDataTypeDescriptor
private DataTypeDescriptor getStoredDataTypeDescriptor(java.lang.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
-
-