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

java.lang.Object
  extended byorg.apache.derby.impl.sql.compile.QueryTreeNode
      extended byorg.apache.derby.impl.sql.compile.ResultSetNode
          extended byorg.apache.derby.impl.sql.compile.FromTable
              extended byorg.apache.derby.impl.sql.compile.SingleChildResultSetNode
                  extended byorg.apache.derby.impl.sql.compile.HashTableNode
All Implemented Interfaces:
Optimizable, Visitable

public class HashTableNode
extends SingleChildResultSetNode

A HashTableNode represents a result set where a hash table is built.

Author:
Jerry Brenner

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 org.apache.derby.impl.sql.compile.FromTable
areAllColumnsProjected, assignCostEstimate, canBeOrdered, considerSortAvoidancePath, convertAbsoluteToRelativeColumnPosition, cursorTargetTable, estimateCost, feasibleJoinStrategy, fillInReferencedTableMap, flatten, getBaseTableName, getBestAccessPath, getBestSortAvoidancePath, getCostEstimate, getCurrentAccessPath, getExposedName, getLevel, getName, getNumColumnsReturned, getProperties, getResultColumnsForList, getSchemaDescriptor, getSchemaDescriptor, getScratchCostEstimate, getTableDescriptor, getTableName, getTableNumber, getUserSpecifiedJoinStrategy, hashKeyColumns, hasTableNumber, initialCapacity, isBaseTable, isCoveringIndex, isFlattenableJoinNode, isMaterializable, isOneRowScan, isTargetTable, legalJoinOrder, loadFactor, LOJ_reorderable, markUpdatableByCursor, maxCapacity, memoryUsageOK, modifyAccessPath, needsSpecialRCLBinding, nextAccessPath, optimizeIt, optimizeSubqueries, pushOptPredicate, rememberAsBest, rememberJoinStrategyAsBest, rememberSortAvoidancePath, resetJoinStrategies, setAllColumnsProjected, setCostEstimate, setHashKeyColumns, setProperties, setTableNumber, startOptimizing, supportsMultipleInstantiations, tellRowOrderingAboutConstantColumns, toString, transformOuterJoins, uniqueJoin, verifyProperties
 
Methods inherited from class org.apache.derby.impl.sql.compile.ResultSetNode
assignResultSetNumber, bindExpressions, bindExpressionsWithTables, bindNonVTITables, bindResultColumns, bindResultColumns, bindTargetExpressions, bindUntypedNullsToResultColumns, bindVTITables, closeMethodArgument, columnTypesAndLengthsMatch, considerMaterialization, enhanceRCLForInsert, generateNormalizationResultSet, genNewRCForInsert, genNormalizeResultSetNode, genProjectRestrict, genProjectRestrict, genProjectRestrictForReordering, getAllResultColumns, getCostEstimate, getCursorTargetTable, getFromList, getMatchingColumn, getNewCostEstimate, getOptimizer, getReferencedTableMap, getResultColumns, getResultSetNumber, isPossibleDistinctScan, isUpdatableCursor, LOJgetReferencedTables, makeResultDescription, makeResultDescriptors, markAsCursorTargetTable, markForDistinctScan, markStatementResultSet, notCursorTargetTable, notFlattenableJoin, numDistinctAggregates, parseDefault, performMaterialization, projectResultColumns, pushOrderByList, rejectParameters, rejectXMLValues, renameGeneratedResultNames, returnsAtMostOneRow, setInsertSource, setReferencedTableMap, setResultColumns, setResultToBooleanTrueNode, setTableConstructorTypes, verifySelectStarSubquery
 
Methods inherited from class org.apache.derby.impl.sql.compile.QueryTreeNode
bind, convertDefaultNode, debugFlush, debugPrint, executeSchemaName, executeStatementName, formatNodeString, foundString, generate, generateAuthorizeCheck, getBeginOffset, getClassFactory, getCompilerContext, getContextManager, getCursorInfo, getDataDictionary, getDependencyManager, getEndOffset, getExecutionFactory, getGenericConstantActionFactory, getIntProperty, getLanguageConnectionContext, getNodeFactory, getNodeType, getNullNode, getParameterTypes, getRowEstimate, getSchemaDescriptor, getSchemaDescriptor, getSPSName, getStatementType, getTableDescriptor, getTypeCompiler, init, init, init, init, init, init, init, init, init, init, init, init, isAtomic, isInstanceOf, isSessionSchema, isSessionSchema, makeConstantAction, makeTableName, needsSavepoint, nodeHeader, optimize, parseQueryText, printLabel, resolveTableToSynonym, setBeginOffset, setContextManager, setEndOffset, setNodeType, setRefActionInfo, treePrint, treePrint, verifyClassExist
 
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

searchPredicateList

PredicateList searchPredicateList

joinPredicateList

PredicateList joinPredicateList

pSubqueryList

SubqueryList pSubqueryList

rSubqueryList

SubqueryList rSubqueryList

childResult

ResultSetNode childResult
ResultSetNode under the SingleChildResultSetNode


hasTrulyTheBestAccessPath

protected boolean hasTrulyTheBestAccessPath
Constructor Detail

HashTableNode

public HashTableNode()
Method Detail

init

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)
Initializer for a HashTableNode.

Overrides:
init in class QueryTreeNode
Parameters:
childResult - The child result set
tableProperties - Properties list associated with the table
resultColumns - The RCL.
searchPredicateList - Single table clauses
joinPredicateList - Multi table clauses
accessPath - The access path
costEstimate - The cost estimate
pSubqueryList - List of subqueries in RCL
rSubqueryList - List of subqueries in Predicate lists
hashKeyColumns - Hash key columns

modifyAccessPath

public Optimizable modifyAccessPath(JBitSet outerTables,
                                    Optimizer optimizer)
                             throws StandardException
Throws:
StandardException - Thrown on error
See Also:
Optimizable.modifyAccessPath(org.apache.derby.iapi.util.JBitSet)

printSubNodes

public void printSubNodes(int depth)
Prints the sub-nodes of this object. See QueryTreeNode.java for how tree printing is supposed to work.

Overrides:
printSubNodes in class SingleChildResultSetNode
Parameters:
depth - The depth of this node in the tree
Returns:
Nothing

generate

public void generate(ActivationClassBuilder acb,
                     MethodBuilder mb)
              throws StandardException
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

Overrides:
generate in class QueryTreeNode
Parameters:
acb - The ActivationClassBuilder for the class being built
mb - The method for the generated code to go into
Throws:
StandardException - Thrown on error

generateResultSet

public void generateResultSet(ExpressionClassBuilder acb,
                              MethodBuilder mb)
                       throws StandardException
General logic shared by Core compilation and by the Replication Filter compiler. A couple ResultSets (the ones used by PREPARE SELECT FILTER) implement this method.

Overrides:
generateResultSet in class ResultSetNode
Parameters:
mb - the method the expression will go into
Throws:
StandardException - Thrown on error

generateMinion

private void generateMinion(ExpressionClassBuilder acb,
                            MethodBuilder mb,
                            boolean genChildResultSet)
                     throws StandardException
Logic shared by generate() and generateResultSet().

Parameters:
mb - the method the expression will go into
Throws:
StandardException - Thrown on error

accept

public Visitable accept(Visitor v)
                 throws StandardException
Accept a visitor, and call v.visit() on child nodes as necessary.

Specified by:
accept in interface Visitable
Overrides:
accept in class SingleChildResultSetNode
Parameters:
v - the visitor
Throws:
StandardException - on error

init

public void init(java.lang.Object childResult,
                 java.lang.Object tableProperties)
Initialilzer for a SingleChildResultSetNode.

Overrides:
init in class FromTable
Parameters:
childResult - The child ResultSetNode
tableProperties - Properties list associated with the table

getTrulyTheBestAccessPath

public AccessPath getTrulyTheBestAccessPath()
Description copied from interface: Optimizable
Get the best access path overall for this Optimizable.

Specified by:
getTrulyTheBestAccessPath in interface Optimizable
Overrides:
getTrulyTheBestAccessPath in class FromTable
See Also:
Optimizable.getTrulyTheBestAccessPath()

getChildResult

public ResultSetNode getChildResult()
Return the childResult from this node.

Returns:
ResultSetNode The childResult from this node.

setChildResult

void setChildResult(ResultSetNode childResult)
Set the childResult for this node.

Parameters:
childResult - The new childResult for this node.
Returns:
Nothing.

pullOptPredicates

public void pullOptPredicates(OptimizablePredicateList optimizablePredicates)
                       throws StandardException
Description copied from interface: Optimizable
Pull all the OptimizablePredicates from this Optimizable and put them in the given OptimizablePredicateList.

Specified by:
pullOptPredicates in interface Optimizable
Overrides:
pullOptPredicates in class FromTable
Throws:
StandardException - Thrown on error
See Also:
Optimizable.pullOptPredicates(org.apache.derby.iapi.sql.compile.OptimizablePredicateList)

forUpdate

public boolean forUpdate()
Description copied from interface: Optimizable
Return true if this is the target table of an update

Specified by:
forUpdate in interface Optimizable
Overrides:
forUpdate in class FromTable
See Also:
Optimizable.forUpdate()

initAccessPaths

public void initAccessPaths(Optimizer optimizer)
Description copied from interface: Optimizable
Init the access paths for this optimizable.

Specified by:
initAccessPaths in interface Optimizable
Overrides:
initAccessPaths in class FromTable
See Also:
Optimizable.initAccessPaths(org.apache.derby.iapi.sql.compile.Optimizer)

referencesTarget

public boolean referencesTarget(java.lang.String name,
                                boolean baseTable)
                         throws StandardException
Search to see if a query references the specifed table name.

Overrides:
referencesTarget in class ResultSetNode
Parameters:
name - Table name (String) to search for.
baseTable - Whether or not name is for a base table
Returns:
true if found, else false
Throws:
StandardException - Thrown on error

referencesSessionSchema

public boolean referencesSessionSchema()
                                throws StandardException
Return true if the node references SESSION schema tables (temporary or permanent)

Overrides:
referencesSessionSchema in class QueryTreeNode
Returns:
true if references SESSION schema tables, else false
Throws:
StandardException - Thrown on error

setLevel

public void setLevel(int level)
Set the (query block) level (0-based) for this FromTable.

Overrides:
setLevel in class FromTable
Parameters:
level - The query block level for this FromTable.
Returns:
Nothing

subqueryReferencesTarget

boolean subqueryReferencesTarget(java.lang.String name,
                                 boolean baseTable)
                           throws StandardException
Return whether or not this ResultSetNode contains a subquery with a reference to the specified target.

Overrides:
subqueryReferencesTarget in class ResultSetNode
Parameters:
name - The table name.
baseTable - Whether or not the name is for a base table.
Returns:
boolean Whether or not a reference to the table was found.
Throws:
StandardException - Thrown on error

preprocess

public ResultSetNode preprocess(int numTables,
                                GroupByList gbl,
                                FromList fromList)
                         throws StandardException
Put a ProjectRestrictNode on top of each FromTable in the FromList. ColumnReferences must continue to point to the same ResultColumn, so that ResultColumn must percolate up to the new PRN. However, that ResultColumn will point to a new expression, a VirtualColumnNode, which points to the FromTable and the ResultColumn that is the source for the ColumnReference. (The new PRN will have the original of the ResultColumnList and the ResultColumns from that list. The FromTable will get shallow copies of the ResultColumnList and its ResultColumns. ResultColumn.expression will remain at the FromTable, with the PRN getting a new VirtualColumnNode for each ResultColumn.expression.) We then project out the non-referenced columns. If there are no referenced columns, then the PRN's ResultColumnList will consist of a single ResultColumn whose expression is 1.

Overrides:
preprocess in class ResultSetNode
Parameters:
numTables - Number of tables in the DML Statement
gbl - The group by list, if any
fromList - The from list, if any
Returns:
The generated ProjectRestrictNode atop the original FromTable.
Throws:
StandardException - Thrown on error

addNewPredicate

public ResultSetNode addNewPredicate(Predicate predicate)
                              throws StandardException
Add a new predicate to the list. This is useful when doing subquery transformations, when we build a new predicate with the left side of the subquery operator and the subquery's result column.

Overrides:
addNewPredicate in class ResultSetNode
Parameters:
predicate - The predicate to add
Returns:
ResultSetNode The new top of the tree.
Throws:
StandardException - Thrown on error

pushExpressions

public void pushExpressions(PredicateList predicateList)
                     throws StandardException
Push expressions down to the first ResultSetNode which can do expression evaluation and has the same referenced table map. RESOLVE - This means only pushing down single table expressions to DistinctNodes today. Once we have a better understanding of how the optimizer will work, we can push down join clauses.

Overrides:
pushExpressions in class FromTable
Parameters:
predicateList - The PredicateList.
Throws:
StandardException - Thrown on error

flattenableInFromSubquery

public boolean flattenableInFromSubquery(FromList fromList)
Evaluate whether or not the subquery in a FromSubquery is flattenable. Currently, a FSqry is flattenable if all of the following are true: o Subquery is a SelectNode. o It contains no top level subqueries. (RESOLVE - we can relax this) o It does not contain a group by or having clause o It does not contain aggregates.

Overrides:
flattenableInFromSubquery in class ResultSetNode
Parameters:
fromList - The outer from list
Returns:
boolean Whether or not the FromSubquery is flattenable.

ensurePredicateList

public ResultSetNode ensurePredicateList(int numTables)
                                  throws StandardException
Ensure that the top of the RSN tree has a PredicateList.

Overrides:
ensurePredicateList in class ResultSetNode
Parameters:
numTables - The number of tables in the query.
Returns:
ResultSetNode A RSN tree with a node which has a PredicateList on top.
Throws:
StandardException - Thrown on error

optimize

public ResultSetNode optimize(DataDictionary dataDictionary,
                              PredicateList predicates,
                              double outerRows)
                       throws StandardException
Optimize this SingleChildResultSetNode.

Overrides:
optimize in class ResultSetNode
Parameters:
dataDictionary - The DataDictionary to use for optimization
outerRows - The number of outer joining rows
Returns:
ResultSetNode The top of the optimized subtree
Throws:
StandardException - Thrown on error

modifyAccessPaths

public ResultSetNode modifyAccessPaths()
                                throws StandardException
Description copied from class: ResultSetNode
Modify the access paths according to the decisions the optimizer made. This can include adding project/restrict nodes, index-to-base-row nodes, etc.

Overrides:
modifyAccessPaths in class ResultSetNode
Returns:
The modified query tree
Throws:
StandardException - Thrown on error
See Also:
ResultSetNode.modifyAccessPaths()

changeAccessPath

public ResultSetNode changeAccessPath()
                               throws StandardException
Description copied from class: ResultSetNode
The optimizer's decision on the access path for a result set may require the generation of extra result sets. For example, if it chooses an index for a FromBaseTable, we need an IndexToBaseRowNode above the FromBaseTable (and the FromBaseTable has to change its column list to match the index. This method in the parent class does not generate any extra result sets. It may be overridden in child classes.

Overrides:
changeAccessPath in class ResultSetNode
Returns:
A ResultSetNode tree modified to do any extra processing for the chosen access path
Throws:
StandardException - Thrown on error
See Also:
ResultSetNode.changeAccessPath()

getFromTableByName

protected FromTable getFromTableByName(java.lang.String name,
                                       java.lang.String schemaName,
                                       boolean exactMatch)
                                throws StandardException
Determine whether or not the specified name is an exposed name in the current query block.

Overrides:
getFromTableByName in class FromTable
Parameters:
name - 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.
Returns:
The FromTable, if any, with the exposed name.
Throws:
StandardException - Thrown on error

decrementLevel

void decrementLevel(int decrement)
Decrement (query block) level (0-based) for this FromTable. This is useful when flattening a subquery.

Overrides:
decrementLevel in class FromTable
Parameters:
decrement - The amount to decrement by.

updateTargetLockMode

public int updateTargetLockMode()
Get the lock mode for the target of an update statement (a delete or update). The update mode will always be row for CurrentOfNodes. It will be table if there is no where clause.

Overrides:
updateTargetLockMode in class ResultSetNode
Returns:
The lock mode
See Also:
TransactionController

isOrderedOn

boolean isOrderedOn(ColumnReference[] crs,
                    boolean permuteOrdering,
                    java.util.Vector fbtVector)
              throws StandardException
Return whether or not the underlying ResultSet tree is ordered on the specified columns. RESOLVE - This method currently only considers the outermost table of the query block.

Overrides:
isOrderedOn in class ResultSetNode
Parameters:
crs - The specified ColumnReference[]
permuteOrdering - Whether or not the order of the CRs in the array can be permuted
fbtVector - Vector that is to be filled with the FromBaseTable
Returns:
Whether the underlying ResultSet tree is ordered on the specified column.
Throws:
StandardException - Thrown on error

isOneRowResultSet

public boolean isOneRowResultSet()
                          throws StandardException
Return whether or not the underlying ResultSet tree will return a single row, at most. This is important for join nodes where we can save the extra next on the right side if we know that it will return at most 1 row.

Overrides:
isOneRowResultSet in class ResultSetNode
Returns:
Whether or not the underlying ResultSet tree will return a single row.
Throws:
StandardException - Thrown on error

isNotExists

public boolean isNotExists()
Return whether or not the underlying ResultSet tree is for a NOT EXISTS join.

Overrides:
isNotExists in class ResultSetNode
Returns:
Whether or not the underlying ResultSet tree is for a NOT EXISTS.

reflectionNeededForProjection

protected boolean reflectionNeededForProjection()
Determine whether we need to do reflection in order to do the projection. Reflection is only needed if there is at least 1 column which is not simply selecting the source column.

Returns:
Whether or not we need to do reflection in order to do the projection.

replaceDefaults

void replaceDefaults(TableDescriptor ttd,
                     ResultColumnList tcl)
               throws StandardException
Replace any DEFAULTs with the associated tree for the default.

Overrides:
replaceDefaults in class ResultSetNode
Parameters:
ttd - The TableDescriptor for the target table.
tcl - The RCL for the target table.
Throws:
StandardException - Thrown on error

markOrderingDependent

void markOrderingDependent()
Notify the underlying result set tree that the result is ordering dependent. (For example, no bulk fetch on an index if under an IndexRowToBaseRow.)

Overrides:
markOrderingDependent in class ResultSetNode
Returns:
Nothing.

getFinalCostEstimate

public CostEstimate getFinalCostEstimate()
Get the final CostEstimate for this node.

Overrides:
getFinalCostEstimate in class ResultSetNode
Returns:
The final CostEstimate for this node, which is the final cost estimate for the child node.

Built on Mon 2007-06-04 09:58:47+0400, from revision ???

Apache Derby V10.1 Engine Documentation - Copyright © 1997,2005 The Apache Software Foundation or its licensors, as applicable.