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 Detail

      • isAutoincrement

        boolean isAutoincrement
      • keepCurrentDefault

        boolean keepCurrentDefault
      • 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
      • MODIFY_AUTOINCREMENT_RESTART_VALUE

        public static final int MODIFY_AUTOINCREMENT_RESTART_VALUE
        See Also:
        Constant Field Values
      • MODIFY_AUTOINCREMENT_INC_VALUE

        public static final int MODIFY_AUTOINCREMENT_INC_VALUE
        See Also:
        Constant Field Values
      • MODIFY_AUTOINCREMENT_ALWAYS_VS_DEFAULT

        public static final int MODIFY_AUTOINCREMENT_ALWAYS_VS_DEFAULT
        See Also:
        Constant Field Values
      • MODIFY_AUTOINCREMENT_CYCLE_VALUE

        public static final int MODIFY_AUTOINCREMENT_CYCLE_VALUE
        See Also:
        Constant Field Values
    • Constructor Detail

      • ColumnDefinitionNode

        ColumnDefinitionNode​(java.lang.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 Detail

      • toString

        public java.lang.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

        java.lang.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
      • 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.
      • 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,
                                             java.lang.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
      • createDefaultInfoOfAutoInc

        protected static DefaultInfoImpl createDefaultInfoOfAutoInc()
      • defaultTypeIsValid

        boolean defaultTypeIsValid​(TypeId columnType,
                                   DataTypeDescriptor columnDesc,
                                   TypeId defaultType,
                                   ValueNode defaultNode,
                                   java.lang.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