Class ConstraintDefinitionNode
java.lang.Object
org.apache.derby.impl.sql.compile.QueryTreeNode
org.apache.derby.impl.sql.compile.TableElementNode
org.apache.derby.impl.sql.compile.ConstraintDefinitionNode
- All Implemented Interfaces:
Visitable
- Direct Known Subclasses:
FKConstraintDefinitionNode
A ConstraintDefintionNode is a class for all nodes that can represent
constraint definitions.
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) ProviderList
(package private) String
(package private) UUID
private int
private boolean[]
boolean[3]: {deferrable?(package private) ValueNode
(package private) ResultColumnList
private TableName
(package private) String
protected int
static final boolean
static final boolean
static final boolean
protected Properties
(package private) UUIDFactory
private int
Fields inherited from class org.apache.derby.impl.sql.compile.TableElementNode
AT_ADD_CHECK_CONSTRAINT, AT_ADD_FOREIGN_KEY_CONSTRAINT, AT_ADD_PRIMARY_KEY_CONSTRAINT, AT_ADD_UNIQUE_CONSTRAINT, AT_DROP_COLUMN, AT_DROP_CONSTRAINT, AT_MODIFY_COLUMN, AT_MODIFY_CONSTRAINT, AT_UNKNOWN, elementType, name
Fields inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
AUTOINCREMENT_CREATE_MODIFY, AUTOINCREMENT_CYCLE, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX
-
Constructor Summary
ConstructorsConstructorDescriptionConstraintDefinitionNode
(TableName constraintName, int constraintType, ResultColumnList rcl, Properties properties, ValueNode checkCondition, String constraintText, int behavior, int verifyType, ContextManager cm) -
Method Summary
Modifier and TypeMethodDescription(package private) void
Accept a visitor on all child nodes.(package private) void
bind
(DDLStatementNode ddlNode, DataDictionary dd) Bind this constraint definition.(package private) ProviderList
Return the auxiliary provider list.(package private) String
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(package private) UUID
Allocates a UUID if one doesn't already exist for the index backing this constraint.(package private) boolean[]
(package private) ValueNode
Get the check condition from this table constraint.(package private) ResultColumnList
Get the column list from this node.(package private) String
Get the name of the constraint.(package private) String
Get the text of the constraint.(package private) int
Get the constraint type(package private) int
Return the behavior of this constraint.(package private) String
To support dropping existing constraints that may have mismatched schema names we need to support ALTER TABLE S1.T DROP CONSTRAINT S2.C.private static ModuleFactory
Privileged Monitor lookup.(package private) Properties
Get the optional properties for the backing index to this constraint.(package private) int
Get the count of enabled fks that reference this constraintprivate UUIDFactory
Get the UUID factory(package private) int
(package private) boolean
Does this element have a check constraint.(package private) boolean
Does this element have a constraint on it.(package private) boolean
Is this a foreign key constraint.(package private) boolean
Is this a primary key constraint.(package private) boolean
Is this a unique key constraint.(package private) boolean
Is this constraint enabled.(package private) boolean
Is this constraint referenced.(package private) void
Qualify all SQL object names in a CHECK constraint with schema name.(package private) boolean
Does this constraint require a backing index for its implementation?(package private) boolean
Is this a primary key or unique constraint?(package private) void
Set the auxiliary provider list.(package private) void
setCharacteristics
(boolean[] cc) (package private) void
setCheckCondition
(ValueNode checkCondition) Set the check condition for this table constraint.(package private) void
setColumnList
(ResultColumnList columnList) Set the column list for this node.(package private) void
setProperties
(Properties properties) Set the optional properties for the backing index to this constraint.toString()
Convert this object to a String.Methods inherited from class org.apache.derby.impl.sql.compile.TableElementNode
getElementType, getName
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
accept, addTag, addUDTUsagePriv, addUDTUsagePriv, bindOffsetFetch, bindRowMultiSet, bindUserCatalogType, bindUserType, checkReliability, checkReliability, convertDefaultNode, copyTagsFrom, createTypeDependency, debugFlush, debugPrint, disablePrivilegeCollection, formatNodeString, generate, generateAuthorizeCheck, getBeginOffset, getClassFactory, getCompilerContext, getContext, getContextManager, getDataDictionary, getDependencyManager, getEndOffset, getExecutionFactory, getGenericConstantActionFactory, getIntProperty, getLanguageConnectionContext, getLongProperty, getNullNode, getOffsetOrderedNodes, getOptimizerFactory, getOptimizerTracer, getParameterTypes, getSchemaDescriptor, getSchemaDescriptor, getStatementType, getTableDescriptor, getTypeCompiler, getUDTDesc, isAtomic, isPrivilegeCollectionRequired, isSessionSchema, isSessionSchema, makeConstantAction, makeTableName, makeTableName, nodeHeader, optimizerTracingIsOn, orReliability, parseSearchCondition, parseStatement, printLabel, printSubNodes, referencesSessionSchema, resolveTableToSynonym, setBeginOffset, setEndOffset, setRefActionInfo, stackPrint, taggedWith, treePrint, treePrint, verifyClassExist
-
Field Details
-
constraintName
-
constraintType
protected int constraintType -
properties
-
apl
ProviderList 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[] characteristicsboolean[3]: {deferrable?, initiallyDeferred?, enforced?}
-
-
Constructor Details
-
ConstraintDefinitionNode
ConstraintDefinitionNode(TableName constraintName, int constraintType, ResultColumnList rcl, Properties properties, ValueNode checkCondition, String constraintText, int behavior, int verifyType, ContextManager cm)
-
-
Method Details
-
setCharacteristics
void setCharacteristics(boolean[] cc) -
getCharacteristics
boolean[] getCharacteristics() -
toString
Convert this object to a String. See comments in QueryTreeNode.java for how this should be done for tree printing.- Overrides:
toString
in classTableElementNode
- Returns:
- This object as a String
-
bind
Bind this constraint definition.- Parameters:
ddlNode
- the create or alter table nodedd
- 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
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
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 classTableElementNode
- Returns:
- boolean Whether or not this is a primary key constraint
-
hasUniqueKeyConstraint
boolean hasUniqueKeyConstraint()Is this a unique key constraint.- Overrides:
hasUniqueKeyConstraint
in classTableElementNode
- Returns:
- boolean Whether or not this is a unique key constraint
-
hasForeignKeyConstraint
boolean hasForeignKeyConstraint()Is this a foreign key constraint.- Overrides:
hasForeignKeyConstraint
in classTableElementNode
- Returns:
- boolean Whether or not this is a unique key constraint
-
hasCheckConstraint
boolean hasCheckConstraint()Does this element have a check constraint.- Overrides:
hasCheckConstraint
in classTableElementNode
- 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 classTableElementNode
- 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
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
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
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. SeeStatementType.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
Get the UUID factory- Returns:
- the UUID factory
-
acceptChildren
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 callaccept(v)
on all visitable fields, as well assuper.acceptChildren(v)
to make sure all visitable fields defined by the super-class are accepted too.- Overrides:
acceptChildren
in classQueryTreeNode
- Parameters:
v
- the visitor- Throws:
StandardException
- on errors raised by the visitor
-
qualifyNames
Qualify all SQL object names in a CHECK constraint with schema name.- Throws:
StandardException
- if an error occurs
-
getMonitor
Privileged Monitor lookup. Must be private so that user code can't call this entry point.
-