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

java.lang.Object
  extended by org.apache.derby.impl.sql.execute.DDLConstantAction
      extended by org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction
All Implemented Interfaces:
ConstantAction
Direct Known Subclasses:
AlterTableConstantAction, ConstraintConstantAction, CreateTriggerConstantAction, DropTableConstantAction, DropTriggerConstantAction, IndexConstantAction, RenameConstantAction

abstract class DDLSingleTableConstantAction
extends DDLConstantAction

Abstract class that has actions that are across all DDL actions that are tied to a table. An example of DDL that affects a table is CREATE INDEX or DROP VIEW. An example of DDL that does not affect a table is CREATE STATEMENT or DROP SCHEMA.


Field Summary
protected  UUID tableId
           
 
Constructor Summary
DDLSingleTableConstantAction(UUID tableId)
          constructor
 
Method Summary
(package private)  void dropConglomerate(ConglomerateDescriptor congDesc, TableDescriptor td, Activation activation, LanguageConnectionContext lcc)
          Similar to dropConstraint(...) above, except this method drops a conglomerate directly instead of going through a ConstraintDescriptor.
(package private)  void dropConglomerate(ConglomerateDescriptor congDesc, TableDescriptor td, boolean skipCreate, java.util.List newConglomActions, Activation activation, LanguageConnectionContext lcc)
          See "dropConglomerate(...)" above.
(package private)  void dropConstraint(ConstraintDescriptor consDesc, Activation activation, LanguageConnectionContext lcc, boolean clearDeps)
          Drop the constraint corresponding to the received descriptor.
(package private)  void dropConstraint(ConstraintDescriptor consDesc, TableDescriptor skipCreate, Activation activation, LanguageConnectionContext lcc, boolean clearDeps)
          See "dropConstraint(...") above.
(package private)  void dropConstraint(ConstraintDescriptor consDesc, TableDescriptor skipCreate, java.util.List newConglomActions, Activation activation, LanguageConnectionContext lcc, boolean clearDeps)
          See "dropConstraint(...") above.
(package private)  void executeConglomReplacement(ConstantAction replaceConglom, Activation activation)
          Execute the received ConstantAction, which will create a new physical conglomerate (or find an existing physical conglomerate that is "sharable") to replace some dropped physical conglomerate.
(package private)  ConstantAction getConglomReplacementAction(ConglomerateDescriptor srcCD, TableDescriptor td, java.util.Properties properties)
          Create a ConstantAction which, when executed, will create a new conglomerate whose attributes match those of the received ConglomerateDescriptor.
private  void loadIndexProperties(LanguageConnectionContext lcc, ConglomerateDescriptor congDesc, java.util.Properties ixProps)
          Get any table properties that exist for the received index descriptor.
(package private)  void recreateUniqueConstraintBackingIndexAsUniqueWhenNotNull(ConglomerateDescriptor cd, TableDescriptor td, Activation activation, LanguageConnectionContext lcc)
          Recreate backing index of unique constraint.
 
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

tableId

protected UUID tableId
Constructor Detail

DDLSingleTableConstantAction

DDLSingleTableConstantAction(UUID tableId)
constructor

Parameters:
tableId - the target table
Method Detail

dropConstraint

void dropConstraint(ConstraintDescriptor consDesc,
                    Activation activation,
                    LanguageConnectionContext lcc,
                    boolean clearDeps)
              throws StandardException
Drop the constraint corresponding to the received descriptor. If in doing so we also drop a backing conglomerate that is shared by other constraints/indexes, then we have to create a new conglomerate to fill the gap. This method exists here as a "utility" method for the various constant actions that may drop constraints in one way or another (there are several that do).

Parameters:
consDesc - ConstraintDescriptor for the constraint to drop
activation - Activation used when creating a new backing index (if a new backing index is needed)
lcc - LanguageConnectionContext used for dropping
clearDeps - Whether or not to clear dependencies when dropping the constraint
Throws:
StandardException

dropConstraint

void dropConstraint(ConstraintDescriptor consDesc,
                    TableDescriptor skipCreate,
                    Activation activation,
                    LanguageConnectionContext lcc,
                    boolean clearDeps)
              throws StandardException
See "dropConstraint(...") above.

Parameters:
skipCreate - Optional TableDescriptor. If non-null then we will skip the "create new conglomerate" processing *IF* the constraint that we drop came from the table described by skipCreate.
Throws:
StandardException

dropConstraint

void dropConstraint(ConstraintDescriptor consDesc,
                    TableDescriptor skipCreate,
                    java.util.List newConglomActions,
                    Activation activation,
                    LanguageConnectionContext lcc,
                    boolean clearDeps)
              throws StandardException
See "dropConstraint(...") above.

Parameters:
newConglomActions - Optional List. If non-null then for each ConglomerateDescriptor for which we skip the "create new conglomerate" processing we will add a ConstantAction to this list. The constant action can then be executed later (esp. by the caller) to create the new conglomerate, if needed. If this argument is null and we skip creation of a new conglomerate, the new conglomerate is effectively ignored (which may be fine in some cases-- ex. when dropping a table).
Throws:
StandardException

dropConglomerate

void dropConglomerate(ConglomerateDescriptor congDesc,
                      TableDescriptor td,
                      Activation activation,
                      LanguageConnectionContext lcc)
                throws StandardException
Similar to dropConstraint(...) above, except this method drops a conglomerate directly instead of going through a ConstraintDescriptor.

Parameters:
congDesc - ConglomerateDescriptor for the conglom to drop
td - TableDescriptor for the table on which congDesc exists
activation - Activation used when creating a new backing index (if a new backing index is needed)
lcc - LanguageConnectionContext used for dropping
Throws:
StandardException

dropConglomerate

void dropConglomerate(ConglomerateDescriptor congDesc,
                      TableDescriptor td,
                      boolean skipCreate,
                      java.util.List newConglomActions,
                      Activation activation,
                      LanguageConnectionContext lcc)
                throws StandardException
See "dropConglomerate(...)" above.

Parameters:
skipCreate - If true then we will skip the "create new conglomerate" processing for the dropped conglom.
newConglomActions - Optional List. If non-null then for each ConglomerateDescriptor for which we skip the "create new conglomerate" processing we will add a ConstantAction to this list. The constant action can then be executed later (esp. by the caller) to create the new conglomerate, if needed. If this argument is null and we skip creation of a new conglomerate, the new conglomerate is effectively ignored (which may be fine in some cases-- ex. when dropping a table).
Throws:
StandardException

recreateUniqueConstraintBackingIndexAsUniqueWhenNotNull

void recreateUniqueConstraintBackingIndexAsUniqueWhenNotNull(ConglomerateDescriptor cd,
                                                             TableDescriptor td,
                                                             Activation activation,
                                                             LanguageConnectionContext lcc)
                                                       throws StandardException
Recreate backing index of unique constraint. It first drops the existing index and creates it again with uniqueness set to false and uniqueWhenNotNull set to true. It reuses the uuid so there is no need to update ConstraintDescriptor.

Parameters:
cd - ConglomerateDescritor to recreate
td - TableDescriptor for table on which congDesc exists
activation - Activation used when creating a new backing index (if a new backing index is needed)
lcc - LanguageConnectionContext used for dropping
Throws:
StandardException

loadIndexProperties

private void loadIndexProperties(LanguageConnectionContext lcc,
                                 ConglomerateDescriptor congDesc,
                                 java.util.Properties ixProps)
                          throws StandardException
Get any table properties that exist for the received index descriptor.

Throws:
StandardException

getConglomReplacementAction

ConstantAction getConglomReplacementAction(ConglomerateDescriptor srcCD,
                                           TableDescriptor td,
                                           java.util.Properties properties)
                                     throws StandardException
Create a ConstantAction which, when executed, will create a new conglomerate whose attributes match those of the received ConglomerateDescriptor.

Parameters:
srcCD - Descriptor describing what the replacement physical conglomerate should look like
td - Table descriptor for the table to which srcCD belongs
properties - Properties from the old (dropped) conglom that should be "forwarded" to the new (replacement) conglom.
Throws:
StandardException

executeConglomReplacement

void executeConglomReplacement(ConstantAction replaceConglom,
                               Activation activation)
                         throws StandardException
Execute the received ConstantAction, which will create a new physical conglomerate (or find an existing physical conglomerate that is "sharable") to replace some dropped physical conglomerate. Then find any conglomerate descriptors which still reference the dropped physical conglomerate and update them all to have a conglomerate number that points to the conglomerate created by the ConstantAction. This method is called as part of DROP processing to handle cases where a physical conglomerate that was shared by multiple descriptors is dropped--in which case a new physical conglomerate must be created to support the remaining descriptors.

Parameters:
replaceConglom - Constant action which, when executed, will either create a new conglomerate or find an existing one that satisfies the ConstantAction's requirements.
activation - Activation used when creating the conglom
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.