Class ConstraintConstantAction
- java.lang.Object
-
- org.apache.derby.impl.sql.execute.DDLConstantAction
-
- org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction
-
- org.apache.derby.impl.sql.execute.ConstraintConstantAction
-
- All Implemented Interfaces:
ConstantAction
- Direct Known Subclasses:
AlterConstraintConstantAction
,CreateConstraintConstantAction
,DropConstraintConstantAction
public abstract class ConstraintConstantAction extends DDLSingleTableConstantAction
This class describes actions that are ALWAYS performed for a constraint creation at Execution time.- Version:
- 0.1
-
-
Field Summary
Fields Modifier and Type Field Description protected UUID
constraintId
protected java.lang.String
constraintName
protected int
constraintType
protected IndexConstantAction
indexAction
protected UUID
schemaId
protected java.lang.String
schemaName
protected java.lang.String
tableName
-
Fields inherited from class org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction
tableId
-
Fields inherited from interface org.apache.derby.iapi.sql.execute.ConstantAction
WHEN_MATCHED_THEN_DELETE, WHEN_MATCHED_THEN_UPDATE, WHEN_NOT_MATCHED_THEN_INSERT
-
-
Constructor Summary
Constructors Constructor Description ConstraintConstantAction(java.lang.String constraintName, int constraintType, java.lang.String tableName, UUID tableId, java.lang.String schemaName, IndexConstantAction indexAction)
Make one of these puppies.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description UUID
getConstraintId()
Get the constraint id of the constraintjava.lang.String
getConstraintName()
Get the constraint nameint
getConstraintType()
Get the constraint type.IndexConstantAction
getIndexAction()
Get the associated index constant action.(package private) static boolean
validateConstraint(java.lang.String constraintName, java.lang.String constraintText, UUID constraintId, TableDescriptor td, LanguageConnectionContext lcc, boolean isCheckConstraint, boolean isInitiallyDeferred)
Evaluate a check constraint or not null column constraint.(package private) static void
validateFKConstraint(Activation activation, TransactionController tc, DataDictionary dd, ForeignKeyConstraintDescriptor fk, ReferencedKeyConstraintDescriptor refcd, ExecRow indexTemplateRow)
Make sure that the foreign key constraint is valid with the existing data in the target table.-
Methods inherited from class org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction
dropConglomerate, dropConglomerate, dropConstraint, dropConstraint, dropConstraint, executeConglomReplacement, getConglomReplacementAction, recreateUniqueConstraintBackingIndexAsUniqueWhenNotNull
-
Methods inherited from class org.apache.derby.impl.sql.execute.DDLConstantAction
addColumnDependencies, adjustUDTDependencies, adjustUDTDependencies, constructToString, getAndCheckSchemaDescriptor, getSchemaDescriptorForCreate, lockTableForDDL, storeConstraintDependenciesOnPrivileges, storeViewTriggerDependenciesOnPrivileges
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.derby.iapi.sql.execute.ConstantAction
executeConstantAction
-
-
-
-
Field Detail
-
constraintName
protected java.lang.String constraintName
-
constraintType
protected int constraintType
-
tableName
protected java.lang.String tableName
-
schemaName
protected java.lang.String schemaName
-
schemaId
protected UUID schemaId
-
indexAction
protected IndexConstantAction indexAction
-
constraintId
protected UUID constraintId
-
-
Constructor Detail
-
ConstraintConstantAction
ConstraintConstantAction(java.lang.String constraintName, int constraintType, java.lang.String tableName, UUID tableId, java.lang.String schemaName, IndexConstantAction indexAction)
Make one of these puppies.- Parameters:
constraintName
- Constraint name.constraintType
- Constraint type.tableName
- Table name.tableId
- UUID of table.schemaName
- schema that table and constraint lives in.indexAction
- IndexConstantAction for constraint (if necessary) RESOLVE - the next parameter should go away once we use UUIDs (Generated constraint names will be based off of uuids)
-
-
Method Detail
-
getConstraintType
public int getConstraintType()
Get the constraint type.- Returns:
- The constraint type
-
getConstraintName
public java.lang.String getConstraintName()
Get the constraint name- Returns:
- the constraint name
-
getConstraintId
public UUID getConstraintId()
Get the constraint id of the constraint- Returns:
- constraint id
-
getIndexAction
public IndexConstantAction getIndexAction()
Get the associated index constant action.- Returns:
- the constant action for the backing index
-
validateFKConstraint
static void validateFKConstraint(Activation activation, TransactionController tc, DataDictionary dd, ForeignKeyConstraintDescriptor fk, ReferencedKeyConstraintDescriptor refcd, ExecRow indexTemplateRow) throws StandardException
Make sure that the foreign key constraint is valid with the existing data in the target table. Open the table, if there aren't any rows, ok. If there are rows, open a scan on the referenced key with table locking at level 2. Pass in the scans to the BulkRIChecker. If any rows fail, barf.- Parameters:
tc
- transaction controllerdd
- data dictionaryfk
- foreign key constraintrefcd
- referenced keyindexTemplateRow
- index template row- Throws:
StandardException
- on error
-
validateConstraint
static boolean validateConstraint(java.lang.String constraintName, java.lang.String constraintText, UUID constraintId, TableDescriptor td, LanguageConnectionContext lcc, boolean isCheckConstraint, boolean isInitiallyDeferred) throws StandardException
Evaluate a check constraint or not null column constraint. Generate a query of the form SELECT COUNT(*) FROM t where NOT() and run it by compiling and executing it. Will work ok if the table is empty and query returns null. - Parameters:
constraintName
- constraint nameconstraintText
- constraint textconstraintId
- constraint idtd
- referenced tablelcc
- the language connection contextisCheckConstraint
- the constraint is a check constraintisInitiallyDeferred
-true
if the constraint is initially deferred- Returns:
- true if null constraint passes, false otherwise
- Throws:
StandardException
- if check constraint fails
-
-