Class ConstraintDefinitionNode

All Implemented Interfaces:
Visitable
Direct Known Subclasses:
FKConstraintDefinitionNode

public class ConstraintDefinitionNode extends TableElementNode
A ConstraintDefintionNode is a class for all nodes that can represent constraint definitions.
  • Field Details

    • constraintName

      private TableName constraintName
    • constraintType

      protected int constraintType
    • properties

      protected Properties properties
    • apl

    • uuidFactory

      UUIDFactory uuidFactory
    • backingIndexName

      String backingIndexName
    • backingIndexUUID

      UUID backingIndexUUID
    • columnList

      ResultColumnList columnList
    • constraintText

      String constraintText
    • checkCondition

      ValueNode checkCondition
    • behavior

      private int behavior
    • verifyType

      private int verifyType
    • DEFERRABLE_DEFAULT

      public static final boolean DEFERRABLE_DEFAULT
      See Also:
    • INITIALLY_DEFERRED_DEFAULT

      public static final boolean INITIALLY_DEFERRED_DEFAULT
      See Also:
    • ENFORCED_DEFAULT

      public static final boolean ENFORCED_DEFAULT
      See Also:
    • characteristics

      private boolean[] characteristics
      boolean[3]: {deferrable?, initiallyDeferred?, enforced?}
  • Constructor Details

  • Method Details

    • setCharacteristics

      void setCharacteristics(boolean[] cc)
    • getCharacteristics

      boolean[] getCharacteristics()
    • 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
    • bind

      void bind(DDLStatementNode ddlNode, DataDictionary dd) throws StandardException
      Bind this constraint definition.
      Parameters:
      ddlNode - the create or alter table node
      dd - the dd
      Throws:
      StandardException - on error
    • getConstraintMoniker

      String getConstraintMoniker()
      Get the name of the constraint. If the user didn't provide one, we make one up. This allows Replication to agree with the core compiler on the names of constraints.
      Returns:
      constraint name
    • getDropSchemaName

      String getDropSchemaName()
      To support dropping existing constraints that may have mismatched schema names we need to support ALTER TABLE S1.T DROP CONSTRAINT S2.C. If a constraint name was specified this returns it, otherwise it returns null.
    • getBackingIndexUUID

      UUID getBackingIndexUUID()
      Allocates a UUID if one doesn't already exist for the index backing this constraint. This allows Replication logic to agree with the core compiler on what the UUIDs of indices are.
      Returns:
      a UUID for the constraint. allocates one if this is the first time this method is called.
    • getBackingIndexName

      String getBackingIndexName(DataDictionary dd)
      Gets a unique name for the backing index for this constraint of the form SQLyymmddhhmmssxxn yy - year, mm - month, dd - day of month, hh - hour, mm - minute, ss - second, xx - the first 2 digits of millisec because we don't have enough space to keep the exact millisec value, n - number between 0-9
      Returns:
      name of backing index
    • setAuxiliaryProviderList

      void setAuxiliaryProviderList(ProviderList apl)
      Set the auxiliary provider list.
      Parameters:
      apl - The new auxiliary provider list.
    • getAuxiliaryProviderList

      ProviderList getAuxiliaryProviderList()
      Return the auxiliary provider list.
      Returns:
      The auxiliary provider list.
    • hasPrimaryKeyConstraint

      boolean hasPrimaryKeyConstraint()
      Is this a primary key constraint.
      Overrides:
      hasPrimaryKeyConstraint in class TableElementNode
      Returns:
      boolean Whether or not this is a primary key constraint
    • hasUniqueKeyConstraint

      boolean hasUniqueKeyConstraint()
      Is this a unique key constraint.
      Overrides:
      hasUniqueKeyConstraint in class TableElementNode
      Returns:
      boolean Whether or not this is a unique key constraint
    • hasForeignKeyConstraint

      boolean hasForeignKeyConstraint()
      Is this a foreign key constraint.
      Overrides:
      hasForeignKeyConstraint in class TableElementNode
      Returns:
      boolean Whether or not this is a unique key constraint
    • hasCheckConstraint

      boolean hasCheckConstraint()
      Does this element have a check constraint.
      Overrides:
      hasCheckConstraint in class TableElementNode
      Returns:
      boolean Whether or not this element has a check constraint
    • hasConstraint

      boolean hasConstraint()
      Does this element have a constraint on it.
      Overrides:
      hasConstraint in class TableElementNode
      Returns:
      boolean Whether or not this element has a constraint on it
    • requiresBackingIndex

      boolean requiresBackingIndex()
      Does this constraint require a backing index for its implementation?
      Returns:
      boolean true if this constraint requires a backing index, i.e. if is a foreign key, primary key or unique key constraint
    • requiresUniqueIndex

      boolean requiresUniqueIndex()
      Is this a primary key or unique constraint?
      Returns:
      boolean true if this is a primary key or unique key constraint
    • getConstraintType

      int getConstraintType()
      Get the constraint type
      Returns:
      constraintType The constraint type.
    • setProperties

      void setProperties(Properties properties)
      Set the optional properties for the backing index to this constraint.
      Parameters:
      properties - The optional Properties for this constraint.
    • getProperties

      Properties getProperties()
      Get the optional properties for the backing index to this constraint.
      Returns:
      The optional properties for the backing index to this constraint
    • isReferenced

      boolean isReferenced()
      Is this constraint referenced.
      Returns:
      true/false
    • getReferenceCount

      int getReferenceCount()
      Get the count of enabled fks that reference this constraint
      Returns:
      the number
    • isEnabled

      boolean isEnabled()
      Is this constraint enabled.
      Returns:
      true/false
    • getColumnList

      ResultColumnList getColumnList()
      Get the column list from this node.
      Returns:
      ResultColumnList The column list from this table constraint.
    • setColumnList

      void setColumnList(ResultColumnList columnList)
      Set the column list for this node. This is useful for check constraints where the list of referenced columns is built at bind time.
      Parameters:
      columnList - The new columnList.
    • getCheckCondition

      ValueNode getCheckCondition()
      Get the check condition from this table constraint.
      Returns:
      The check condition from this node.
    • setCheckCondition

      void setCheckCondition(ValueNode checkCondition)
      Set the check condition for this table constraint.
      Parameters:
      checkCondition - The check condition
    • getConstraintText

      String getConstraintText()
      Get the text of the constraint. (Only meaningful for check constraints.)
      Returns:
      The constraint text.
    • getDropBehavior

      int getDropBehavior()
      Return the behavior of this constraint. See StatementType.DROP_CASCADE etc.
      Returns:
      the behavior
    • getVerifyType

      int getVerifyType()
      Returns:
      the expected type of the constraint, DataDictionary.DROP_CONSTRAINT if the constraint is to be dropped without checking its type.
    • getUUIDFactory

      private UUIDFactory getUUIDFactory()
      Get the UUID factory
      Returns:
      the UUID factory
    • acceptChildren

      void acceptChildren(Visitor v) throws StandardException
      Description copied from class: QueryTreeNode
      Accept a visitor on all child nodes. All sub-classes that add fields that should be visited, should override this method and call accept(v) on all visitable fields, as well as super.acceptChildren(v) to make sure all visitable fields defined by the super-class are accepted too.
      Overrides:
      acceptChildren in class QueryTreeNode
      Parameters:
      v - the visitor
      Throws:
      StandardException - on errors raised by the visitor
    • qualifyNames

      void qualifyNames() throws StandardException
      Qualify all SQL object names in a CHECK constraint with schema name.
      Throws:
      StandardException - if an error occurs
    • getMonitor

      private static ModuleFactory getMonitor()
      Privileged Monitor lookup. Must be private so that user code can't call this entry point.