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 int
columnPos
private boolean
hasGenerationClause
private boolean
isAutoincrement
private java.lang.String
name
This class implements Formatable.private java.lang.String
schemaName
private java.lang.String
tableName
private DataTypeDescriptor
type
private boolean
updatableByCursor
-
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 int
getColumnPosition()
Get the position of the Column.java.lang.String
getName()
Returns the name of the Column.java.lang.String
getSourceSchemaName()
Get the name of the schema for the Column's base table, if any.java.lang.String
getSourceTableName()
Get the name of the underlying(base) table this column comes from, if any.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.DataTypeDescriptor
getType()
Returns a DataTypeDescriptor for the column.int
getTypeFormatId()
Get the formatID which corresponds to this class.boolean
hasGenerationClause()
Return true if this result column represents a generated column.boolean
isAutoincrement()
Tell us if the column is an autoincrement column or not.void
readExternal(java.io.ObjectInput in)
Read this object from a stream of stored objects.java.lang.String
toString()
boolean
updatableByCursor()
Return true if the column is wirtable by a positioned update.void
writeExternal(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:
getType
in interfaceResultColumnDescriptor
- Returns:
- A DataTypeDescriptor describing the type of the column.
-
getName
public java.lang.String getName()
Returns the name of the Column.- Specified by:
getName
in 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:
getSourceSchemaName
in 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:
getSourceTableName
in 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:
getColumnPosition
in interfaceResultColumnDescriptor
- 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 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:ResultColumnDescriptor
Return true if the column is wirtable by a positioned update.- Specified by:
updatableByCursor
in 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:ResultColumnDescriptor
Return true if this result column represents a generated column.- Specified by:
hasGenerationClause
in interfaceResultColumnDescriptor
-
writeExternal
public void writeExternal(java.io.ObjectOutput out) throws java.io.IOException
Write this object out- Specified by:
writeExternal
in 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.ClassNotFoundException
Read this object from a stream of stored objects.- Specified by:
readExternal
in 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:
getTypeFormatId
in interfaceTypedFormat
- Returns:
- the formatID of this class
-
toString
public java.lang.String toString()
- Overrides:
toString
in 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
-
-