org.apache.derby.impl.sql.compile
Class DDLStatementNode

java.lang.Object
  extended by org.apache.derby.impl.sql.compile.QueryTreeNode
      extended by org.apache.derby.impl.sql.compile.StatementNode
          extended by org.apache.derby.impl.sql.compile.DDLStatementNode
All Implemented Interfaces:
Visitable
Direct Known Subclasses:
AlterTableNode, CreateAliasNode, CreateIndexNode, CreateRoleNode, CreateSchemaNode, CreateSequenceNode, CreateTableNode, CreateTriggerNode, CreateViewNode, DropAliasNode, DropIndexNode, DropRoleNode, DropSchemaNode, DropSequenceNode, DropTableNode, DropTriggerNode, DropViewNode, GrantNode, GrantRoleNode, RenameNode, RevokeNode, RevokeRoleNode, SavepointNode

abstract class DDLStatementNode
extends StatementNode

A DDLStatementNode represents any type of DDL statement: CREATE TABLE, CREATE INDEX, ALTER TABLE, etc.


Field Summary
static int ADD_TYPE
           
static int DROP_TYPE
           
(package private)  boolean implicitCreateSchema
          sub-classes can set this to be true to allow implicit creation of the main object's schema at execution time.
private  boolean initOk
           
static int LOCKING_TYPE
           
static int MODIFY_TYPE
           
private  TableName objectName
           
static int UNKNOWN_TYPE
           
 
Fields inherited from class org.apache.derby.impl.sql.compile.StatementNode
NEED_CURSOR_ACTIVATION, NEED_DDL_ACTIVATION, NEED_NOTHING_ACTIVATION, NEED_PARAM_ACTIVATION, NEED_ROW_ACTIVATION
 
Fields inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
AUTOINCREMENT_CREATE_MODIFY, AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX, isPrivilegeCollectionRequired
 
Constructor Summary
DDLStatementNode()
           
 
Method Summary
(package private)  int activationKind()
           
(package private)  void bindName(DataDictionary dataDictionary)
          Bind the object Name.
private  TableDescriptor checkTableDescriptor(TableDescriptor td, boolean doSystemTableCheck)
           
 void generate(ActivationClassBuilder acb, MethodBuilder mb)
          Generic generate code for all DDL statements.
 java.lang.String getFullName()
          Return the full dot expression name of the object being dropped.
 TableName getObjectName()
           
 java.lang.String getRelativeName()
          Return the name of the table being dropped.
protected  SchemaDescriptor getSchemaDescriptor()
          Get a schema descriptor for this DDL object.
protected  SchemaDescriptor getSchemaDescriptor(boolean ownerCheck, boolean doSystemSchemaCheck)
          Get a schema descriptor for this DDL object.
protected  TableDescriptor getTableDescriptor()
           
protected  TableDescriptor getTableDescriptor(boolean doSystemTableCheck)
          Validate that the table is ok for DDL -- e.g.
protected  TableDescriptor getTableDescriptor(TableName tableName)
          Validate that the table is ok for DDL -- e.g.
protected  TableDescriptor getTableDescriptor(UUID tableId)
           
 void init(java.lang.Object objectName)
          Initialize a query tree node.
protected  void initAndCheck(java.lang.Object objectName)
          Initialize the object name we will be performing the DDL on and check that we are not in the system schema and that DDL is allowed.
 boolean isAtomic()
          A DDL statement is always atomic
private  TableDescriptor justGetDescriptor(TableName tableName)
          Just get the table descriptor.
(package private)  FromList makeFromList(DataDictionary dd, TableElementList tableElementList, boolean creatingTable)
          Make a from list for binding query fragments in a CREATE/ALTER TABLE statement.
 java.lang.String toString()
          Convert this object to a String.
 
Methods inherited from class org.apache.derby.impl.sql.compile.StatementNode
bindStatement, executeSchemaName, executeStatementName, generate, getSPSName, lockTableForCompilation, makeResultDescription, needsSavepoint, optimizeStatement, statementToString
 
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
accept, acceptChildren, bindOffsetFetch, bindRowMultiSet, bindUserType, checkReliability, checkReliability, convertDefaultNode, createTypeDependency, debugFlush, debugPrint, disablePrivilegeCollection, formatNodeString, foundString, generateAuthorizeCheck, getBeginOffset, getClassFactory, getCompilerContext, getContextManager, getCursorInfo, getDataDictionary, getDependencyManager, getEndOffset, getExecutionFactory, getGenericConstantActionFactory, getIntProperty, getLanguageConnectionContext, getNodeFactory, getNodeType, getNullNode, getParameterTypes, getRowEstimate, getSchemaDescriptor, getSchemaDescriptor, getStatementType, getTableDescriptor, getTypeCompiler, init, init, init, init, init, init, init, init, init, init, init, init, init, isInstanceOf, isPrivilegeCollectionRequired, isSessionSchema, isSessionSchema, makeConstantAction, makeTableName, makeTableName, nodeHeader, orReliability, parseStatement, printLabel, printSubNodes, referencesSessionSchema, resolveTableToSynonym, setBeginOffset, setContextManager, setEndOffset, setNodeType, setRefActionInfo, stackPrint, treePrint, treePrint, verifyClassExist
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

UNKNOWN_TYPE

public static final int UNKNOWN_TYPE
See Also:
Constant Field Values

ADD_TYPE

public static final int ADD_TYPE
See Also:
Constant Field Values

DROP_TYPE

public static final int DROP_TYPE
See Also:
Constant Field Values

MODIFY_TYPE

public static final int MODIFY_TYPE
See Also:
Constant Field Values

LOCKING_TYPE

public static final int LOCKING_TYPE
See Also:
Constant Field Values

objectName

private TableName objectName

initOk

private boolean initOk

implicitCreateSchema

boolean implicitCreateSchema
sub-classes can set this to be true to allow implicit creation of the main object's schema at execution time.

Constructor Detail

DDLStatementNode

DDLStatementNode()
Method Detail

init

public void init(java.lang.Object objectName)
          throws StandardException
Description copied from class: QueryTreeNode
Initialize a query tree node.

Overrides:
init in class QueryTreeNode
Throws:
StandardException - Thrown on error

initAndCheck

protected void initAndCheck(java.lang.Object objectName)
                     throws StandardException
Initialize the object name we will be performing the DDL on and check that we are not in the system schema and that DDL is allowed.

Throws:
StandardException

isAtomic

public boolean isAtomic()
A DDL statement is always atomic

Overrides:
isAtomic in class StatementNode
Returns:
true

getRelativeName

public java.lang.String getRelativeName()
Return the name of the table being dropped. This is the unqualified table name.

Returns:
the relative name

getFullName

public java.lang.String getFullName()
Return the full dot expression name of the object being dropped.

Returns:
the full name

getObjectName

public final TableName getObjectName()

toString

public java.lang.String toString()
Convert this object to a String. See comments in QueryTreeNode.java for how this should be done for tree printing.

Overrides:
toString in class StatementNode
Returns:
This object as a String

activationKind

int activationKind()
Specified by:
activationKind in class StatementNode

generate

public final void generate(ActivationClassBuilder acb,
                           MethodBuilder mb)
                    throws StandardException
Generic generate code for all DDL statements.

Overrides:
generate in class QueryTreeNode
Parameters:
acb - The ActivationClassBuilder for the class being built
mb - The execute() method to be built
Throws:
StandardException - Thrown on error

getSchemaDescriptor

protected final SchemaDescriptor getSchemaDescriptor()
                                              throws StandardException
Get a schema descriptor for this DDL object. Uses this.objectName. Always returns a schema, we lock in the schema name prior to execution. Checks if current authorizationID is owner of the schema.

Returns:
Schema Descriptor
Throws:
StandardException - throws on schema name that doesn't exist

getSchemaDescriptor

protected final SchemaDescriptor getSchemaDescriptor(boolean ownerCheck,
                                                     boolean doSystemSchemaCheck)
                                              throws StandardException
Get a schema descriptor for this DDL object. Uses this.objectName. Always returns a schema, we lock in the schema name prior to execution. The most common call to this method is with 2nd parameter true which says that SchemaDescriptor should not be requested for system schema. The only time this method will get called with 2nd parameter set to false will be when user has requested for inplace compress using SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE Above inplace compress can be invoked on system tables. A call to SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE internally gets translated into ALTER TABLE sql. When ALTER TABLE is executed for SYSCS_INPLACE_COMPRESS_TABLE, we want to allow SchemaDescriptor request for system tables. DERBY-1062

Parameters:
ownerCheck - If check for schema owner is needed
doSystemSchemaCheck - If check for system schema is needed. If set to true, then throw an exception if schema descriptor is requested for a system schema. The only time this param will be set to false is when user is asking for inplace compress of a system table. DERBY-1062
Returns:
Schema Descriptor
Throws:
StandardException - throws on schema name that doesn't exist

getTableDescriptor

protected final TableDescriptor getTableDescriptor()
                                            throws StandardException
Throws:
StandardException

getTableDescriptor

protected final TableDescriptor getTableDescriptor(boolean doSystemTableCheck)
                                            throws StandardException
Validate that the table is ok for DDL -- e.g. that it exists, it is not a view. It is ok for it to be a system table. Also check that its schema is ok. Currently, the only time this method is called is when user has asked for inplace compress. eg call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('SYS','SYSTABLES',1,1,1); Inplace compress is allowed on both system and user tables.

Returns:
the validated table descriptor, never null
Throws:
StandardException - on error

getTableDescriptor

protected final TableDescriptor getTableDescriptor(UUID tableId)
                                            throws StandardException
Throws:
StandardException

getTableDescriptor

protected final TableDescriptor getTableDescriptor(TableName tableName)
                                            throws StandardException
Validate that the table is ok for DDL -- e.g. that it exists, it is not a view, and is not a system table, and that its schema is ok.

Returns:
the validated table descriptor, never null
Throws:
StandardException - on error

justGetDescriptor

private TableDescriptor justGetDescriptor(TableName tableName)
                                   throws StandardException
Just get the table descriptor. Don't worry if it belongs to a view, system table, synonym or a real table. Let the caller decide what to do.

Parameters:
tableName -
Returns:
TableDescriptor for the give TableName
Throws:
StandardException - on error

checkTableDescriptor

private TableDescriptor checkTableDescriptor(TableDescriptor td,
                                             boolean doSystemTableCheck)
                                      throws StandardException
Throws:
StandardException

bindName

void bindName(DataDictionary dataDictionary)
        throws StandardException
Bind the object Name. This means filling in the schema name if it wasn't specified.

Parameters:
dataDictionary - Data dictionary to bind against.
Throws:
StandardException - Thrown on error

makeFromList

FromList makeFromList(DataDictionary dd,
                      TableElementList tableElementList,
                      boolean creatingTable)
                throws StandardException
Make a from list for binding query fragments in a CREATE/ALTER TABLE statement.

Parameters:
dd - Metadata.
tableElementList - the parenthesized list of columns and constraints in a CREATE/ALTER TABLE statement
creatingTable - true if this is for CREATE TABLE. false if this is for ALTER TABLE
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.