Class ColumnDefinitionNode

All Implemented Interfaces:
Visitable
Direct Known Subclasses:
ModifyColumnNode

public class ColumnDefinitionNode extends TableElementNode
A ColumnDefinitionNode represents a column definition in a DDL statement. There will be a ColumnDefinitionNode for each column in a CREATE TABLE statement, and for the column in an ALTER TABLE ADD COLUMN statement.
  • Field Details

    • isAutoincrement

      boolean isAutoincrement
    • type

      The data type of this column.
    • defaultValue

      DataValueDescriptor defaultValue
    • defaultInfo

      DefaultInfoImpl defaultInfo
    • defaultNode

      DefaultNode defaultNode
    • keepCurrentDefault

      boolean keepCurrentDefault
    • generationClauseNode

      GenerationClauseNode generationClauseNode
    • autoincrementIncrement

      long autoincrementIncrement
    • autoincrementStart

      long autoincrementStart
    • autoincrementCycle

      boolean autoincrementCycle
    • autoinc_create_or_modify_Start_Increment

      long autoinc_create_or_modify_Start_Increment
    • autoincrementVerify

      boolean autoincrementVerify
    • CREATE_AUTOINCREMENT

      public static final int CREATE_AUTOINCREMENT
      See Also:
    • MODIFY_AUTOINCREMENT_RESTART_VALUE

      public static final int MODIFY_AUTOINCREMENT_RESTART_VALUE
      See Also:
    • MODIFY_AUTOINCREMENT_INC_VALUE

      public static final int MODIFY_AUTOINCREMENT_INC_VALUE
      See Also:
    • MODIFY_AUTOINCREMENT_ALWAYS_VS_DEFAULT

      public static final int MODIFY_AUTOINCREMENT_ALWAYS_VS_DEFAULT
      See Also:
    • MODIFY_AUTOINCREMENT_CYCLE_VALUE

      public static final int MODIFY_AUTOINCREMENT_CYCLE_VALUE
      See Also:
  • Constructor Details

    • ColumnDefinitionNode

      ColumnDefinitionNode(String name, ValueNode defaultNode, DataTypeDescriptor dataTypeServices, long[] autoIncrementInfo, ContextManager cm) throws StandardException
      Constructor for a ColumnDefinitionNode
      Parameters:
      name - The name of the column
      defaultNode - The default value of the column
      dataTypeServices - A DataTypeServices telling the type of the column
      autoIncrementInfo - Info for auto-increment columns
      cm - The context manager
      Throws:
      StandardException
  • Method Details

    • toString

      public String toString()
      Convert this object to a String. See comments in QueryTreeNode.java for how this should be done for tree printing.
      Overrides:
      toString in class TableElementNode
      Returns:
      This object as a String
    • getColumnName

      String getColumnName()
      Returns the unqualified name of the column being defined.
      Returns:
      the name of the column
    • getType

      final DataTypeDescriptor getType()
      Returns the data type of the column being defined.
      Returns:
      the data type of the column
    • setType

      public void setType(DataTypeDescriptor dts)
      Set the type of this column
    • setNullability

      final void setNullability(boolean nullable)
      Set the nullability of the column definition node.
    • setCollationType

      void setCollationType(int collationType)
      Set the collation type, note derivation is always implicit for any catalog item.
    • getDefaultValue

      DataValueDescriptor getDefaultValue()
      Return the DataValueDescriptor containing the default value for this column
      Returns:
      The default value of the column
    • getDefaultInfo

      DefaultInfo getDefaultInfo()
      Return the DefaultInfo containing the default information for this column
      Returns:
      The default info for the column
    • setDefaultInfo

      public void setDefaultInfo(DefaultInfoImpl dii)
      Set the generation clause (Default) bound to this column.
    • getDefaultNode

      DefaultNode getDefaultNode()
      Return the DefaultNode, if any, associated with this node.
      Returns:
      The DefaultNode, if any, associated with this node.
    • hasGenerationClause

      public boolean hasGenerationClause()
      Return true if this column has a generation clause.
    • getGenerationClauseNode

      GenerationClauseNode getGenerationClauseNode()
      Get the generation clause.
    • isAutoincrementColumn

      boolean isAutoincrementColumn()
      Is this an autoincrement column?
      Returns:
      Whether or not this is an autoincrement column.
    • getAutoincrementStart

      long getAutoincrementStart()
      Get the autoincrement start value
      Returns:
      Autoincrement start value.
    • getAutoincrementIncrement

      long getAutoincrementIncrement()
      Get the autoincrement increment value
      Returns:
      Autoincrement increment value.
    • getAutoincrementCycle

      boolean getAutoincrementCycle()
      Get the autoincrement cycle value
      Returns:
      Autoincrement cycle value.
    • getAutoinc_create_or_modify_Start_Increment

      long getAutoinc_create_or_modify_Start_Increment()
      Get the status of this autoincrement column
      Returns:
      ColumnDefinitionNode.CREATE_AUTOINCREMENT - if this definition is for autoincrement column creatoin ColumnDefinitionNode.MODIFY_AUTOINCREMENT_RESTART_VALUE - if this definition is for alter sutoincrement column to change the start value ColumnDefinitionNode.MODIFY_AUTOINCREMENT_INC_VALUE if this definition is for alter autoincrement column to change the increment value
    • checkUserType

      void checkUserType(TableDescriptor td) throws StandardException
      Check the validity of a user type. Checks whether this column definition describes a user type that either doesn't exist or is inaccessible, or that doesn't implement Serializable.
      Throws:
      StandardException - Thrown on error
    • getOldDefaultUUID

      UUID getOldDefaultUUID()
      Get the UUID of the old column default.
      Returns:
      The UUID of the old column default.
    • getAction

      int getAction()
      Get the action associated with this node.
      Returns:
      The action associated with this node.
    • bindAndValidateDefault

      void bindAndValidateDefault(DataDictionary dd, TableDescriptor td) throws StandardException
      Check the validity of the default, if any, for this node.
      Parameters:
      dd - The DataDictionary.
      td - The TableDescriptor.
      Throws:
      StandardException - Thrown on error
    • validateAutoincrement

      void validateAutoincrement(DataDictionary dd, TableDescriptor td, int tableType) throws StandardException
      Check the validity of the autoincrement values for this node. The following errors are thrown by this routine. 1. 42z21 Invalid Increment; i.e 0. 2. 42z22 Invalid Type; autoincrement created on a non-exact-numeric type 3. 42995 The requested function does not apply to global temporary tables
      Parameters:
      dd - DataDictionary.
      td - table descriptor.
      tableType - base table or declared global temporary table.
      Throws:
      StandardException - if autoincrement default is incorrect; i.e if increment is 0 or if initial or increment values are out of range for the datatype.
    • autoincrementCheckRange

      private void autoincrementCheckRange(long minValue, long maxValue, String typeName) throws StandardException
      checks to see if autoincrementIncrement and autoincrementInitial are within the bounds of the type whose min and max values are passed into this routine.
      Throws:
      StandardException
    • validateDefault

      void validateDefault(DataDictionary dd, TableDescriptor td) throws StandardException
      Check the validity of the default for this node.
      Parameters:
      td - The TableDescriptor.
      Throws:
      StandardException - Thrown on error
    • createDefaultInfoOfAutoInc

      protected static DefaultInfoImpl createDefaultInfoOfAutoInc()
    • defaultTypeIsValid

      boolean defaultTypeIsValid(TypeId columnType, DataTypeDescriptor columnDesc, TypeId defaultType, ValueNode defaultNode, String defaultText) throws StandardException
      Check the validity of the default for this node
      Parameters:
      columnType - TypeId of the target column.
      columnDesc - Description of the type of the target column.
      defaultType - TypeId of the default node.
      defaultNode - Parsed ValueNode for the default value.
      defaultText - Unparsed default value (as entered by user).
      Returns:
      True if the defaultNode abides by the restrictions imposed by DB2 on default constants; false otherwise.
      Throws:
      StandardException
    • printSubNodes

      void printSubNodes(int depth)
      Prints the sub-nodes of this object. See QueryTreeNode.java for how tree printing is supposed to work.
      Overrides:
      printSubNodes in class QueryTreeNode
      Parameters:
      depth - The depth of this node in the tree