|
||||||||||
| 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.ResultSetNode
org.apache.derby.impl.sql.compile.FromTable
org.apache.derby.impl.sql.compile.SingleChildResultSetNode
org.apache.derby.impl.sql.compile.HashTableNode
A HashTableNode represents a result set where a hash table is built.
| Field Summary | |
(package private) ResultSetNode |
childResult
ResultSetNode under the SingleChildResultSetNode |
protected boolean |
hasTrulyTheBestAccessPath
|
(package private) PredicateList |
joinPredicateList
|
(package private) SubqueryList |
pSubqueryList
|
(package private) SubqueryList |
rSubqueryList
|
(package private) PredicateList |
searchPredicateList
|
| Fields inherited from class org.apache.derby.impl.sql.compile.FromTable |
bestAccessPath, bestCostEstimate, bestSortAvoidancePath, correlationName, corrTableName, currentAccessPath, hashKeyColumns, initialCapacity, level, loadFactor, maxCapacity, tableNumber, tableProperties, trulyTheBestAccessPath, userSpecifiedJoinStrategy |
| Fields inherited from class org.apache.derby.impl.sql.compile.ResultSetNode |
costEstimate, cursorTargetTable, insertSource, optimizer, referencedTableMap, resultColumns, resultSetNumber, scratchCostEstimate, statementResultSet |
| Fields inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode |
AUTOINCREMENT_INC_INDEX, AUTOINCREMENT_IS_AUTOINCREMENT_INDEX, AUTOINCREMENT_START_INDEX, beginOffset, endOffset |
| Constructor Summary | |
HashTableNode()
|
|
| Method Summary | |
Visitable |
accept(Visitor v)
Accept a visitor, and call v.visit() on child nodes as necessary. |
ResultSetNode |
addNewPredicate(Predicate predicate)
Add a new predicate to the list. |
ResultSetNode |
changeAccessPath()
The optimizer's decision on the access path for a result set may require the generation of extra result sets. |
(package private) void |
decrementLevel(int decrement)
Decrement (query block) level (0-based) for this FromTable. |
ResultSetNode |
ensurePredicateList(int numTables)
Ensure that the top of the RSN tree has a PredicateList. |
boolean |
flattenableInFromSubquery(FromList fromList)
Evaluate whether or not the subquery in a FromSubquery is flattenable. |
boolean |
forUpdate()
Return true if this is the target table of an update |
void |
generate(ActivationClassBuilder acb,
MethodBuilder mb)
For joins, the tree will be (nodes are left out if the clauses are empty): ProjectRestrictResultSet -- for the having and the select list SortResultSet -- for the group by list ProjectRestrictResultSet -- for the where and the select list (if no group or having) the result set for the fromList |
private void |
generateMinion(ExpressionClassBuilder acb,
MethodBuilder mb,
boolean genChildResultSet)
Logic shared by generate() and generateResultSet(). |
void |
generateResultSet(ExpressionClassBuilder acb,
MethodBuilder mb)
General logic shared by Core compilation and by the Replication Filter compiler. |
ResultSetNode |
getChildResult()
Return the childResult from this node. |
CostEstimate |
getFinalCostEstimate()
Get the final CostEstimate for this node. |
protected FromTable |
getFromTableByName(java.lang.String name,
java.lang.String schemaName,
boolean exactMatch)
Determine whether or not the specified name is an exposed name in the current query block. |
AccessPath |
getTrulyTheBestAccessPath()
Get the best access path overall for this Optimizable. |
void |
init(java.lang.Object childResult,
java.lang.Object tableProperties)
Initialilzer for a SingleChildResultSetNode. |
void |
init(java.lang.Object childResult,
java.lang.Object tableProperties,
java.lang.Object resultColumns,
java.lang.Object searchPredicateList,
java.lang.Object joinPredicateList,
java.lang.Object accessPath,
java.lang.Object costEstimate,
java.lang.Object pSubqueryList,
java.lang.Object rSubqueryList,
java.lang.Object hashKeyColumns)
Initializer for a HashTableNode. |
void |
initAccessPaths(Optimizer optimizer)
Init the access paths for this optimizable. |
boolean |
isNotExists()
Return whether or not the underlying ResultSet tree is for a NOT EXISTS join. |
boolean |
isOneRowResultSet()
Return whether or not the underlying ResultSet tree will return a single row, at most. |
(package private) boolean |
isOrderedOn(ColumnReference[] crs,
boolean permuteOrdering,
java.util.Vector fbtVector)
Return whether or not the underlying ResultSet tree is ordered on the specified columns. |
(package private) void |
markOrderingDependent()
Notify the underlying result set tree that the result is ordering dependent. |
Optimizable |
modifyAccessPath(JBitSet outerTables,
Optimizer optimizer)
|
ResultSetNode |
modifyAccessPaths()
Modify the access paths according to the decisions the optimizer made. |
ResultSetNode |
optimize(DataDictionary dataDictionary,
PredicateList predicates,
double outerRows)
Optimize this SingleChildResultSetNode. |
ResultSetNode |
preprocess(int numTables,
GroupByList gbl,
FromList fromList)
Put a ProjectRestrictNode on top of each FromTable in the FromList. |
void |
printSubNodes(int depth)
Prints the sub-nodes of this object. |
void |
pullOptPredicates(OptimizablePredicateList optimizablePredicates)
Pull all the OptimizablePredicates from this Optimizable and put them in the given OptimizablePredicateList. |
void |
pushExpressions(PredicateList predicateList)
Push expressions down to the first ResultSetNode which can do expression evaluation and has the same referenced table map. |
boolean |
referencesSessionSchema()
Return true if the node references SESSION schema tables (temporary or permanent) |
boolean |
referencesTarget(java.lang.String name,
boolean baseTable)
Search to see if a query references the specifed table name. |
protected boolean |
reflectionNeededForProjection()
Determine whether we need to do reflection in order to do the projection. |
(package private) void |
replaceDefaults(TableDescriptor ttd,
ResultColumnList tcl)
Replace any DEFAULTs with the associated tree for the default. |
(package private) void |
setChildResult(ResultSetNode childResult)
Set the childResult for this node. |
void |
setLevel(int level)
Set the (query block) level (0-based) for this FromTable. |
(package private) boolean |
subqueryReferencesTarget(java.lang.String name,
boolean baseTable)
Return whether or not this ResultSetNode contains a subquery with a reference to the specified target. |
int |
updateTargetLockMode()
Get the lock mode for the target of an update statement (a delete or update). |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.apache.derby.iapi.sql.compile.Optimizable |
getDataDictionary, getReferencedTableMap, getResultSetNumber |
| Field Detail |
PredicateList searchPredicateList
PredicateList joinPredicateList
SubqueryList pSubqueryList
SubqueryList rSubqueryList
ResultSetNode childResult
protected boolean hasTrulyTheBestAccessPath
| Constructor Detail |
public HashTableNode()
| Method Detail |
public void init(java.lang.Object childResult,
java.lang.Object tableProperties,
java.lang.Object resultColumns,
java.lang.Object searchPredicateList,
java.lang.Object joinPredicateList,
java.lang.Object accessPath,
java.lang.Object costEstimate,
java.lang.Object pSubqueryList,
java.lang.Object rSubqueryList,
java.lang.Object hashKeyColumns)
init in class QueryTreeNodechildResult - The child result settableProperties - Properties list associated with the tableresultColumns - The RCL.searchPredicateList - Single table clausesjoinPredicateList - Multi table clausesaccessPath - The access pathcostEstimate - The cost estimatepSubqueryList - List of subqueries in RCLrSubqueryList - List of subqueries in Predicate listshashKeyColumns - Hash key columns
public Optimizable modifyAccessPath(JBitSet outerTables,
Optimizer optimizer)
throws StandardException
StandardException - Thrown on errorOptimizable.modifyAccessPath(org.apache.derby.iapi.util.JBitSet)public void printSubNodes(int depth)
printSubNodes in class SingleChildResultSetNodedepth - The depth of this node in the tree
public void generate(ActivationClassBuilder acb,
MethodBuilder mb)
throws StandardException
generate in class QueryTreeNodeacb - The ActivationClassBuilder for the class being builtmb - The method for the generated code to go into
StandardException - Thrown on error
public void generateResultSet(ExpressionClassBuilder acb,
MethodBuilder mb)
throws StandardException
generateResultSet in class ResultSetNodemb - the method the expression will go into
StandardException - Thrown on error
private void generateMinion(ExpressionClassBuilder acb,
MethodBuilder mb,
boolean genChildResultSet)
throws StandardException
mb - the method the expression will go into
StandardException - Thrown on error
public Visitable accept(Visitor v)
throws StandardException
accept in interface Visitableaccept in class SingleChildResultSetNodev - the visitor
StandardException - on error
public void init(java.lang.Object childResult,
java.lang.Object tableProperties)
init in class FromTablechildResult - The child ResultSetNodetableProperties - Properties list associated with the tablepublic AccessPath getTrulyTheBestAccessPath()
Optimizable
getTrulyTheBestAccessPath in interface OptimizablegetTrulyTheBestAccessPath in class FromTableOptimizable.getTrulyTheBestAccessPath()public ResultSetNode getChildResult()
void setChildResult(ResultSetNode childResult)
childResult - The new childResult for this node.
public void pullOptPredicates(OptimizablePredicateList optimizablePredicates)
throws StandardException
Optimizable
pullOptPredicates in interface OptimizablepullOptPredicates in class FromTableStandardException - Thrown on errorOptimizable.pullOptPredicates(org.apache.derby.iapi.sql.compile.OptimizablePredicateList)public boolean forUpdate()
Optimizable
forUpdate in interface OptimizableforUpdate in class FromTableOptimizable.forUpdate()public void initAccessPaths(Optimizer optimizer)
Optimizable
initAccessPaths in interface OptimizableinitAccessPaths in class FromTableOptimizable.initAccessPaths(org.apache.derby.iapi.sql.compile.Optimizer)
public boolean referencesTarget(java.lang.String name,
boolean baseTable)
throws StandardException
referencesTarget in class ResultSetNodename - Table name (String) to search for.baseTable - Whether or not name is for a base table
StandardException - Thrown on error
public boolean referencesSessionSchema()
throws StandardException
referencesSessionSchema in class QueryTreeNodeStandardException - Thrown on errorpublic void setLevel(int level)
setLevel in class FromTablelevel - The query block level for this FromTable.
boolean subqueryReferencesTarget(java.lang.String name,
boolean baseTable)
throws StandardException
subqueryReferencesTarget in class ResultSetNodename - The table name.baseTable - Whether or not the name is for a base table.
StandardException - Thrown on error
public ResultSetNode preprocess(int numTables,
GroupByList gbl,
FromList fromList)
throws StandardException
preprocess in class ResultSetNodenumTables - Number of tables in the DML Statementgbl - The group by list, if anyfromList - The from list, if any
StandardException - Thrown on error
public ResultSetNode addNewPredicate(Predicate predicate)
throws StandardException
addNewPredicate in class ResultSetNodepredicate - The predicate to add
StandardException - Thrown on error
public void pushExpressions(PredicateList predicateList)
throws StandardException
pushExpressions in class FromTablepredicateList - The PredicateList.
StandardException - Thrown on errorpublic boolean flattenableInFromSubquery(FromList fromList)
flattenableInFromSubquery in class ResultSetNodefromList - The outer from list
public ResultSetNode ensurePredicateList(int numTables)
throws StandardException
ensurePredicateList in class ResultSetNodenumTables - The number of tables in the query.
StandardException - Thrown on error
public ResultSetNode optimize(DataDictionary dataDictionary,
PredicateList predicates,
double outerRows)
throws StandardException
optimize in class ResultSetNodedataDictionary - The DataDictionary to use for optimizationouterRows - The number of outer joining rows
StandardException - Thrown on error
public ResultSetNode modifyAccessPaths()
throws StandardException
ResultSetNode
modifyAccessPaths in class ResultSetNodeStandardException - Thrown on errorResultSetNode.modifyAccessPaths()
public ResultSetNode changeAccessPath()
throws StandardException
ResultSetNode
changeAccessPath in class ResultSetNodeStandardException - Thrown on errorResultSetNode.changeAccessPath()
protected FromTable getFromTableByName(java.lang.String name,
java.lang.String schemaName,
boolean exactMatch)
throws StandardException
getFromTableByName in class FromTablename - The specified name to search for as an exposed name.schemaName - Schema name, if non-null.exactMatch - Whether or not we need an exact match on specified schema and table
names or match on table id.
StandardException - Thrown on errorvoid decrementLevel(int decrement)
decrementLevel in class FromTabledecrement - The amount to decrement by.public int updateTargetLockMode()
updateTargetLockMode in class ResultSetNodeTransactionController
boolean isOrderedOn(ColumnReference[] crs,
boolean permuteOrdering,
java.util.Vector fbtVector)
throws StandardException
isOrderedOn in class ResultSetNodecrs - The specified ColumnReference[]permuteOrdering - Whether or not the order of the CRs in the array can be permutedfbtVector - Vector that is to be filled with the FromBaseTable
StandardException - Thrown on error
public boolean isOneRowResultSet()
throws StandardException
isOneRowResultSet in class ResultSetNodeStandardException - Thrown on errorpublic boolean isNotExists()
isNotExists in class ResultSetNodeprotected boolean reflectionNeededForProjection()
void replaceDefaults(TableDescriptor ttd,
ResultColumnList tcl)
throws StandardException
replaceDefaults in class ResultSetNodettd - The TableDescriptor for the target table.tcl - The RCL for the target table.
StandardException - Thrown on errorvoid markOrderingDependent()
markOrderingDependent in class ResultSetNodepublic CostEstimate getFinalCostEstimate()
getFinalCostEstimate in class ResultSetNode
|
Built on Tue 2006-10-10 19:23:47+0200, from revision exported | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||