|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectorg.apache.derby.impl.sql.compile.QueryTreeNode
org.apache.derby.impl.sql.compile.StatementNode
org.apache.derby.impl.sql.compile.DMLStatementNode
org.apache.derby.impl.sql.compile.DMLModStatementNode
org.apache.derby.impl.sql.compile.InsertNode
public final class InsertNode
An InsertNode is the top node in a query tree for an insert statement.
After parsing, the node contains targetTableName: the target table for the insert collist: a list of column names, if specified queryexpr: the expression being inserted, either a values clause or a select form; both of these are represented via the SelectNode, potentially with a TableOperatorNode such as UnionNode above it.
After binding, the node has had the target table's descriptor located and inserted, and the queryexpr and collist have been massaged so that they are identical to the table layout. This involves adding any default values for missing columns, and reordering the columns to match the table's ordering of them.
After optimizing, ...
Field Summary | |
---|---|
protected RowLocation[] |
autoincRowLocation
|
protected boolean |
bulkInsert
|
private boolean |
bulkInsertReplace
|
ValueNode |
checkConstraints
|
boolean |
deferred
|
private ValueNode |
fetchFirst
|
FKInfo |
fkInfo
|
private ValueNode |
offset
|
private OrderByList |
orderByList
|
ResultColumnList |
targetColumnList
|
java.util.Properties |
targetProperties
|
Fields inherited from class org.apache.derby.impl.sql.compile.DMLModStatementNode |
---|
fkColArrays, fkColDescriptors, fkIndexConglomNumbers, fkRefActions, fkTableNames, graphHashTable, indexConglomerateNumbers, indexNames, indicesToMaintain, isDependentTable, lockMode, relevantCdl, relevantTriggers, resultColumnList, synonymTableName, targetTableDescriptor, targetTableName, targetVTI, triggerInfo |
Fields inherited from class org.apache.derby.impl.sql.compile.DMLStatementNode |
---|
resultSet |
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 | |
---|---|
InsertNode()
|
Method Summary | |
---|---|
(package private) void |
acceptChildren(Visitor v)
Accept the visitor for all visitable children of this node. |
void |
bindStatement()
Bind this InsertNode. |
(package private) ResultSetNode |
enhanceAndCheckForAutoincrement(ResultSetNode resultSet,
boolean inOrder,
int[] colMap)
Process ResultSet column lists for projection and autoincrement. |
void |
generate(ActivationClassBuilder acb,
MethodBuilder mb)
Code generation for insert creates an expression for: ResultSetFactory.getInsertResultSet(resultSet.generate(ps), generationClausesResult, checkConstrainResult, this ) |
private void |
getAffectedIndexes(TableDescriptor td)
Get the list of indexes on the table being inserted into. |
boolean[] |
getIndexedCols()
Create a boolean[] to track the (0-based) columns which are indexed. |
(package private) int |
getPrivType()
Return default privilege needed for this node. |
protected int |
getStatementType()
Return the type of statement, something from StatementType. |
(package private) static int |
getStatementType(java.util.Properties targetProperties)
Return the statement type, where it is dependent on the targetProperties. |
void |
init(java.lang.Object targetName,
java.lang.Object insertColumns,
java.lang.Object queryExpression,
java.lang.Object targetProperties,
java.lang.Object orderByList,
java.lang.Object offset,
java.lang.Object fetchFirst)
Initializer for an InsertNode. |
ConstantAction |
makeConstantAction()
Compile constants that Execution will use |
void |
optimizeStatement()
Generate an optimized QueryTree from a bound QueryTree. |
void |
printSubNodes(int depth)
Prints the sub-nodes of this object. |
boolean |
referencesSessionSchema()
Return true if the node references SESSION schema tables (temporary or permanent) |
java.lang.String |
statementToString()
|
java.lang.String |
toString()
Convert this object to a String. |
private boolean |
verifyBulkInsert(DataDictionary dd,
java.lang.String mode)
Do the bind time checks to see if bulkInsert is allowed on this table. |
private void |
verifyTargetProperties(DataDictionary dd)
Verify that the target properties that we are interested in all hold valid values. |
Methods inherited from class org.apache.derby.impl.sql.compile.DMLStatementNode |
---|
activationKind, bind, bindExpressions, bindExpressionsWithTables, bindResultSetsWithTables, bindTables, generateParameterValueSet, getResultSetNode, makeResultDescription |
Methods inherited from class org.apache.derby.impl.sql.compile.StatementNode |
---|
executeSchemaName, executeStatementName, generate, getSPSName, lockTableForCompilation, needsSavepoint |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public ResultColumnList targetColumnList
public boolean deferred
public ValueNode checkConstraints
public java.util.Properties targetProperties
public FKInfo fkInfo
protected boolean bulkInsert
private boolean bulkInsertReplace
private OrderByList orderByList
private ValueNode offset
private ValueNode fetchFirst
protected RowLocation[] autoincRowLocation
Constructor Detail |
---|
public InsertNode()
Method Detail |
---|
public void init(java.lang.Object targetName, java.lang.Object insertColumns, java.lang.Object queryExpression, java.lang.Object targetProperties, java.lang.Object orderByList, java.lang.Object offset, java.lang.Object fetchFirst)
init
in class QueryTreeNode
targetName
- The name of the table/VTI to insert intoinsertColumns
- A ResultColumnList with the names of the
columns to insert into. May be null if the
user did not specify the columns - in this
case, the binding phase will have to figure
it out.queryExpression
- The query expression that will generate
the rows to insert into the given tabletargetProperties
- The properties specified on the target tableorderByList
- The order by list for the source result set, null if
no order by listpublic java.lang.String toString()
toString
in class StatementNode
public java.lang.String statementToString()
statementToString
in class DMLModStatementNode
public void printSubNodes(int depth)
printSubNodes
in class DMLModStatementNode
depth
- The depth of this node in the treepublic void bindStatement() throws StandardException
Binding an insert will also massage the tree so that the collist and select column order/number are the same as the layout of the table in the store.
bindStatement
in class StatementNode
StandardException
- Thrown on errorResultSetNode enhanceAndCheckForAutoincrement(ResultSetNode resultSet, boolean inOrder, int[] colMap) throws StandardException
resultSet
- current node in the result set treeinOrder
- FALSE if the column list needs reorderingcolMap
- correspondence between RCLs
StandardException
- Thrown on errorint getPrivType()
DMLStatementNode
getPrivType
in class DMLStatementNode
public boolean referencesSessionSchema() throws StandardException
referencesSessionSchema
in class QueryTreeNode
StandardException
- Thrown on errorprivate void verifyTargetProperties(DataDictionary dd) throws StandardException
dd
- The DataDictionary
StandardException
- Thrown on errorprivate boolean verifyBulkInsert(DataDictionary dd, java.lang.String mode) throws StandardException
dd
- The DataDictionarymode
- The insert mode
StandardException
- Thrown on errorpublic ConstantAction makeConstantAction() throws StandardException
makeConstantAction
in class QueryTreeNode
StandardException
- Thrown on failurepublic boolean[] getIndexedCols() throws StandardException
StandardException
- Thrown on failurepublic void optimizeStatement() throws StandardException
Remove any duplicate ORDER BY columns and push an ORDER BY if present down to the source result set, before calling super.optimizeStatement.
optimizeStatement
in class DMLModStatementNode
StandardException
- Thrown on failurepublic void generate(ActivationClassBuilder acb, MethodBuilder mb) throws StandardException
generate
in class QueryTreeNode
acb
- The ActivationClassBuilder for the class being builtmb
- the method for the execute() method to be built
StandardException
- Thrown on errorprotected final int getStatementType()
getStatementType
in class QueryTreeNode
static final int getStatementType(java.util.Properties targetProperties)
private void getAffectedIndexes(TableDescriptor td) throws StandardException
td
- TableDescriptor for the table being inserted into
or deleted from
StandardException
- Thrown on errorvoid acceptChildren(Visitor v) throws StandardException
acceptChildren
in class DMLModStatementNode
v
- the visitor
StandardException
- on error
|
Built on Thu 2010-12-23 20:49:13+0000, from revision ??? | ||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |