org.apache.derby.iapi.sql.dictionary
Class ReferencedKeyConstraintDescriptor

java.lang.Object
  extended by org.apache.derby.iapi.sql.dictionary.TupleDescriptor
      extended by org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
          extended by org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
              extended by org.apache.derby.iapi.sql.dictionary.ReferencedKeyConstraintDescriptor
All Implemented Interfaces:
Dependable, Dependent, Provider, UniqueTupleDescriptor

public class ReferencedKeyConstraintDescriptor
extends KeyConstraintDescriptor

A ReferencedConstraintDeescriptor is a primary key or a unique key that is referenced by a foreign key.


Field Summary
private  boolean checkedSelfReferencing
           
private  int constraintType
          public interface to this descriptor: public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type) throws StandardException; public ConstraintDescriptorList getForeignKeyConstraints(int type) throws StandardException; public boolean isReferenced(); public int getReferenceCount(); public int incrementReferenceCount(); public int decrementReferenceCount();
private  ConstraintDescriptorList fkConstraintList
           
private  ConstraintDescriptorList fkEnabledConstraintList
           
private  boolean hasSelfReferencing
           
(package private)  int referenceCount
           
 
Fields inherited from class org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
indexId
 
Fields inherited from class org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
ALL, constraintId, constraintName, DISABLED, ENABLED, isEnabled, SYSCONSTRAINTS_STATE_FIELD, table
 
Fields inherited from interface org.apache.derby.catalog.Dependable
ACTIVATION, ALIAS, COLUMNS_IN_TABLE, COLUMNS_PERMISSION, CONGLOMERATE, CONSTRAINT, DEFAULT, FILE, HEAP, INDEX, PERM, PREPARED_STATEMENT, ROLE_GRANT, ROUTINE_PERMISSION, SCHEMA, SEQUENCE, STORED_PREPARED_STATEMENT, TABLE, TABLE_PERMISSION, TRIGGER, VIEW
 
Constructor Summary
protected ReferencedKeyConstraintDescriptor(int constraintType, DataDictionary dataDictionary, TableDescriptor table, java.lang.String constraintName, boolean deferrable, boolean initiallyDeferred, int[] columns, UUID constraintId, UUID indexId, SchemaDescriptor schemaDesc, boolean isEnabled, int referenceCount)
          Constructor for a KeyConstraintDescriptorImpl
 
Method Summary
private  void checkType(int type)
           
 int decrementReferenceCount()
          Decrement the reference count by one.
 int getConstraintType()
          Gets an identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).
 ConstraintDescriptorList getForeignKeyConstraints(int type)
          Get the referencing foreign key constraints
 int getReferenceCount()
          Get the number of enabled fks that reference this key.
 boolean hasNonSelfReferencingFK(int type)
          Am I referenced by a FK on another table?
 boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type)
          Am I referenced by a FK on the same table?
 int incrementReferenceCount()
          Bump the reference count by one.
 boolean isReferenced()
          Is this constraint referenced?
 boolean needsToFire(int stmtType, int[] modifiedCols)
          Does this constraint need to fire on this type of DML?
 
Methods inherited from class org.apache.derby.iapi.sql.dictionary.KeyConstraintDescriptor
getConglomerateId, getIndexConglomerateDescriptor, getIndexId, getIndexUUIDString, hasBackingIndex, toString
 
Methods inherited from class org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor
areColumnsComparable, columnIntersects, deferrable, doColumnsIntersect, drop, getClassType, getColumnDescriptors, getConstraintName, getConstraintText, getDependableFinder, getDescriptorName, getDescriptorType, getKeyColumns, getObjectID, getObjectName, getReferencedColumns, getSchemaDescriptor, getTableDescriptor, getTableId, getUUID, initiallyDeferred, isEnabled, isValid, makeInvalid, prepareToInvalidate, setDisabled, setEnabled
 
Methods inherited from class org.apache.derby.iapi.sql.dictionary.TupleDescriptor
getColumnDependableFinder, getDataDictionary, getDependableFinder, isPersistent, setDataDictionary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.derby.catalog.Dependable
isPersistent
 

Field Detail

constraintType

private final int constraintType
public interface to this descriptor:
  1. public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl, int type) throws StandardException;
  2. public ConstraintDescriptorList getForeignKeyConstraints(int type) throws StandardException;
  3. public boolean isReferenced();
  4. public int getReferenceCount();
  5. public int incrementReferenceCount();
  6. public int decrementReferenceCount();


referenceCount

int referenceCount

fkEnabledConstraintList

private ConstraintDescriptorList fkEnabledConstraintList

fkConstraintList

private ConstraintDescriptorList fkConstraintList

checkedSelfReferencing

private boolean checkedSelfReferencing

hasSelfReferencing

private boolean hasSelfReferencing
Constructor Detail

ReferencedKeyConstraintDescriptor

protected ReferencedKeyConstraintDescriptor(int constraintType,
                                            DataDictionary dataDictionary,
                                            TableDescriptor table,
                                            java.lang.String constraintName,
                                            boolean deferrable,
                                            boolean initiallyDeferred,
                                            int[] columns,
                                            UUID constraintId,
                                            UUID indexId,
                                            SchemaDescriptor schemaDesc,
                                            boolean isEnabled,
                                            int referenceCount)
Constructor for a KeyConstraintDescriptorImpl

Parameters:
constraintType - The type of the constraint
dataDictionary - The data dictionary that this descriptor lives in
table - The descriptor of the table the constraint is on
constraintName - The name of the constraint.
deferrable - If the constraint can be deferred.
initiallyDeferred - If the constraint starts life deferred.
columns - columns involved in the constraint
constraintId - UUID of constraint
indexId - The UUID for the backing index
schemaDesc - The SchemaDescriptor for the constraint
isEnabled - is the constraint enabled?
referenceCount - number of FKs (enabled only)
Method Detail

getConstraintType

public final int getConstraintType()
Description copied from class: ConstraintDescriptor
Gets an identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).

Specified by:
getConstraintType in class ConstraintDescriptor
Returns:
An identifier telling what type of descriptor it is (UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK).

hasSelfReferencingFK

public boolean hasSelfReferencingFK(ConstraintDescriptorList cdl,
                                    int type)
                             throws StandardException
Am I referenced by a FK on the same table?

Parameters:
cdl - ConstraintDescriptorList for the table
type - ConstraintDescriptor.(ENABLED|DISABLED|ALL)
Returns:
true/false
Throws:
StandardException - on error

hasNonSelfReferencingFK

public boolean hasNonSelfReferencingFK(int type)
                                throws StandardException
Am I referenced by a FK on another table?

Parameters:
type - ConstraintDescriptor.(ENABLED|DISABLED|ALL)
Returns:
true/false
Throws:
StandardException - on error

getForeignKeyConstraints

public ConstraintDescriptorList getForeignKeyConstraints(int type)
                                                  throws StandardException
Get the referencing foreign key constraints

Parameters:
type - ConstraintDescriptor.(ENABLED|DISABLED|ALL)
Returns:
the list of constraints (ConstraintDescriptorListImpl)
Throws:
StandardException - on error

isReferenced

public boolean isReferenced()
Is this constraint referenced? Returns true if there are enabled fks that reference this constraint.

Overrides:
isReferenced in class ConstraintDescriptor
Returns:
false

getReferenceCount

public int getReferenceCount()
Get the number of enabled fks that reference this key.

Overrides:
getReferenceCount in class ConstraintDescriptor
Returns:
the number of fks

incrementReferenceCount

public int incrementReferenceCount()
Bump the reference count by one.

Returns:
the number of fks

decrementReferenceCount

public int decrementReferenceCount()
Decrement the reference count by one.

Returns:
the number of fks

needsToFire

public boolean needsToFire(int stmtType,
                           int[] modifiedCols)
Does this constraint need to fire on this type of DML? For referenced keys, fire if referenced by a fk, and stmt is delete or bulk insert replace, or stmt is update and columns intersect.

Specified by:
needsToFire in class ConstraintDescriptor
Parameters:
stmtType - the type of DML (StatementType.INSERT|StatementType.UPDATE|StatementType.DELETE)
modifiedCols - the columns modified, or null for all
Returns:
true/false

checkType

private void checkType(int type)
                throws StandardException
Throws:
StandardException

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.