org.apache.derby.impl.sql.execute
Class ConstraintConstantAction

java.lang.Object
  extended by org.apache.derby.impl.sql.execute.DDLConstantAction
      extended by org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction
          extended by org.apache.derby.impl.sql.execute.ConstraintConstantAction
All Implemented Interfaces:
ConstantAction
Direct Known Subclasses:
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
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
 
Constructor Summary
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
 java.lang.String getConstraintName()
          Get the constraint name
 int 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, TableDescriptor td, LanguageConnectionContext lcc, boolean isCheckConstraint)
          Evaluate a check constraint or not null column constraint.
(package private) static void validateFKConstraint(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
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

getIndexAction

public IndexConstantAction getIndexAction()
Get the associated index constant action.

Returns:
the constant action for the backing index

validateFKConstraint

static void validateFKConstraint(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 controller
dd - data dictionary
fk - foreign key constraint
refcd - referenced key
indexTemplateRow - index template row
Throws:
StandardException - on error

validateConstraint

static boolean validateConstraint(java.lang.String constraintName,
                                  java.lang.String constraintText,
                                  TableDescriptor td,
                                  LanguageConnectionContext lcc,
                                  boolean isCheckConstraint)
                           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 name
constraintText - constraint text
td - referenced table
lcc - the language connection context
isCheckConstraint - the constraint is a check constraint
Returns:
true if null constraint passes, false otherwise
Throws:
StandardException - if check constraint fails

Built on Thu 2011-03-10 11:54:14+0000, from revision ???

Apache Derby V10.6 Internals - Copyright © 2004,2007 The Apache Software Foundation. All Rights Reserved.