Top Description Fields Constructors Methods
org.apache.derby.impl.sql.compile

pack-priv Class FromBaseTable

extends FromTable
Class Inheritance
Imports
java.util.Collections, .Enumeration, .HashSet, .List, .Properties, .Set, org.apache.derby.catalog.IndexDescriptor, org.apache.derby.shared.common.error.StandardException, org.apache.derby.shared.common.reference.ClassName, .SQLState, org.apache.derby.iapi.services.classfile.VMOpcode, org.apache.derby.iapi.services.compiler.MethodBuilder, org.apache.derby.iapi.services.context.ContextManager, org.apache.derby.iapi.services.io.FormatableArrayHolder, .FormatableBitSet, .FormatableIntHolder, org.apache.derby.iapi.services.property.PropertyUtil, org.apache.derby.shared.common.sanity.SanityManager, org.apache.derby.iapi.sql.LanguageProperties, org.apache.derby.iapi.sql.compile.AccessPath, .CompilerContext, .CostEstimate, .JoinStrategy, .OptimizablePredicate, .OptimizablePredicateList, .Optimizer, .RequiredRowOrdering, .RowOrdering, .TagFilter, .Visitor, org.apache.derby.iapi.sql.dictionary.ColumnDescriptor, .ColumnDescriptorList, .ConglomerateDescriptor, .ConstraintDescriptor, .DataDictionary, .IndexRowGenerator, .SchemaDescriptor, .TableDescriptor, .ViewDescriptor, org.apache.derby.iapi.sql.execute.ExecRow, org.apache.derby.iapi.store.access.ScanController, .StaticCompiledOpenConglomInfo, .StoreCostController, .TransactionController, org.apache.derby.iapi.transaction.TransactionControl, org.apache.derby.iapi.types.DataValueDescriptor, org.apache.derby.iapi.util.JBitSet, .StringUtil, org.apache.derby.impl.services.daemon.IndexStatisticsDaemonImpl, org.apache.derby.impl.sql.catalog.SYSUSERSRowFactory

A FromBaseTable represents a table in the FROM list of a DML statement, as distinguished from a FromSubquery, which represents a subquery in the FROM list. A FromBaseTable may actually represent a view. During parsing, we can't distinguish views from base tables. During binding, when we find FromBaseTables that represent views, we replace them with FromSubqueries. By the time we get to code generation, all FromSubqueries have been eliminated, and all FromBaseTables will represent only true base tables.

Positioned Update: Currently, all columns of an updatable cursor are selected to deal with a positioned update. This is because we don't know what columns will ultimately be needed from the UpdateNode above us. For example, consider:



	get c as 'select cint from t for update of ctinyint'
 update t set ctinyint = csmallint

Ideally, the cursor only selects cint. Then, something akin to an IndexRowToBaseRow is generated to take the CursorResultSet and get the appropriate columns out of the base table from the RowLocation returned by the cursor. Then the update node can generate the appropriate NormalizeResultSet (or whatever else it might need) to get things into the correct format for the UpdateResultSet. See CurrentOfNode for more information.

Field Summary

Modifier and TypeField and Description
private boolean
pack-priv ConglomerateDescriptor
pack-priv PredicateList
baseTableRestrictionList

Restriction as a PredicateList

pack-priv int
pack-priv boolean
private String[]
pack-priv ConglomerateDescriptor[]
pack-priv static final int
private JBitSet
private boolean
private boolean
private int[]
private long
private boolean
private boolean
private boolean
hasCheckedIndexStats

Whether or not we have checked the index statistics for staleness.

private boolean
pack-priv boolean
pack-priv PredicateList
pack-priv PredicateList
private boolean
raDependentScan

Information for dependent table scan for Referential Actions

private String
private FormatableBitSet
pack-priv PredicateList
pack-priv PredicateList
private long
private String
private double
private boolean
pack-priv PredicateList
pack-priv TableDescriptor
pack-priv TableName
private String
private ResultColumnList
pack-priv static final int
pack-priv static final int
pack-priv int
private boolean
Inherited from org.apache.derby.impl.sql.compile.FromTable:
ADD_PLANbestAccessPathbestCostEstimatebestSortAvoidancePathcorrelationNamecorrTableNamecurrentAccessPathhashKeyColumnsinitialCapacitylevelLOAD_PLANloadFactormaxCapacityorigTableNameREMOVE_PLANtableNumbertablePropertiestrulyTheBestAccessPathuserSpecifiedJoinStrategy

Constructor Summary

AccessConstructor and Description
pack-priv
FromBaseTable(TableName
The name of the table
tableName
,
String
The correlation name
correlationName
,
ResultColumnList
The derived column list
derivedRCL
,
Properties
The Properties list associated with the table.
tableProperties
,
ContextManager
The context manager
cm
)

Constructor for a table in a FROM list.

pack-priv
FromBaseTable(TableName
The name of the table
tableName
,
String
The correlation name
correlationName
,
int
Table is being updated/deleted from.
updateOrDelete
,
ResultColumnList
The derived column list
derivedRCL
,
ContextManager
The context manager
cm
)

Initializer for a table in a FROM list.

Method Summary

Modifier and TypeMethod and Description
pack-priv void
acceptChildren(Visitor
the visitor
v
)

Overrides org.apache.derby.impl.sql.compile.FromTable.acceptChildren.

Accept the visitor for all visitable children of this node.

pack-priv ResultColumnList

Returns:

ResultColumnList the rcl
addColsToList
(ResultColumnList
The original list
inputRcl
,
FormatableBitSet
bit set of cols we want
colsWeWant
)

Augment the RCL to include the columns in the FormatableBitSet.

pack-priv void
adjustForSortElimination()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.adjustForSortElimination.

Notify the underlying result set tree that the optimizer has chosen to "eliminate" a sort.

pack-priv void
adjustForSortElimination(RequiredRowOrdering rowOrdering)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.adjustForSortElimination.

Same goal as adjustForSortElimination above, but this version takes a RequiredRowOrdering to allow nodes to adjust based on the ORDER BY clause, if needed.

private long
pack-priv void
bindExpressions(FromList
FromList to use/append to.
fromListParam
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.bindExpressions.

Bind the expressions in this FromBaseTable.

pack-priv ResultSetNode

Returns:

ResultSetNode The FromTable for the table or resolved view.
bindNonVTITables
(DataDictionary
The DataDictionary to use for binding
dataDictionary
,
FromList
FromList to use/append to.
fromListParam
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.bindNonVTITables.

Bind the table in this FromBaseTable.

pack-priv void
bindResultColumns(FromList
FromList to use/append to.
fromListParam
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.bindResultColumns.

Bind the result columns of this ResultSetNode when there is no base table to bind them to.

private TableDescriptor
bindTableDescriptor()

Bind the table descriptor for this table.

protected boolean
canBeOrdered()

Overrides org.apache.derby.impl.sql.compile.FromTable.canBeOrdered.

Tell super-class that this Optimizable can be ordered

pack-priv ResultSetNode
changeAccessPath()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.changeAccessPath.

The optimizer's decision on the access path for a result set may require the generation of extra result sets.

pack-priv void
clearDependency(List<Integer>
list of bit numbers to be cleared
locations
)

Clear the bits from the dependency map when join nodes are flattened

public int
convertAbsoluteToRelativeColumnPosition(int
The absolute 0-based column position for the column.
absolutePosition
)

Overrides org.apache.derby.impl.sql.compile.FromTable.convertAbsoluteToRelativeColumnPosition.

Implements org.apache.derby.iapi.sql.compile.Optimizable.convertAbsoluteToRelativeColumnPosition.

Convert an absolute to a relative 0-based column position.

protected boolean

Returns:

true/false
cursorTargetTable
()

Overrides org.apache.derby.impl.sql.compile.FromTable.cursorTargetTable.

Is this a table that has a FOR UPDATE clause?

pack-priv void
disableBulkFetch()

Turn off bulk fetch

pack-priv void
doSpecialMaxScan()

Do a special scan for max.

public CostEstimate
estimateCost(OptimizablePredicateList
The predicate list to optimize against
predList
,
ConglomerateDescriptor
The conglomerate descriptor to get the cost of
cd
,
CostEstimate
The estimated cost of the part of the plan outer to this optimizable.
outerCost
,
Optimizer
The optimizer to use to help estimate the cost
optimizer
,
RowOrdering
The row ordering for all the tables in the join order, including this one.
rowOrdering
)

Overrides org.apache.derby.impl.sql.compile.FromTable.estimateCost.

Implements org.apache.derby.iapi.sql.compile.Optimizable.estimateCost.

Estimate the cost of scanning this FromBaseTable using the given predicate list with the given conglomerate.

public boolean
forUpdate()

Overrides org.apache.derby.impl.sql.compile.FromTable.forUpdate.

Implements org.apache.derby.iapi.sql.compile.Optimizable.forUpdate.

Return true if this is the target table of an update

pack-priv void
generate(ActivationClassBuilder
The ActivationClassBuilder for the class being built
acb
,
MethodBuilder
the execute() method to be built
mb
)

Overrides org.apache.derby.impl.sql.compile.QueryTreeNode.generate.

Generation on a FromBaseTable creates a scan on the optimizer-selected conglomerate.

private void
private void
private void
generateRefActionDependentTableScan(ExpressionClassBuilder
The ExpressionClassBuilder for the class being built
acb
,
MethodBuilder
The execute() method to be built
mb
)

Generation on a FromBaseTable for a referential action dependent table.

pack-priv void
generateResultSet(ExpressionClassBuilder
The ExpressionClassBuilder for the class being built
acb
,
MethodBuilder
The execute() method to be built
mb
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.generateResultSet.

Generation on a FromBaseTable for a SELECT.

protected ResultSetNode

Returns:

The generated ProjectRestrictNode atop the original FromTable.
genProjectRestrict
(int
Number of tables in the DML Statement
numTables
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.genProjectRestrict.

Put a ProjectRestrictNode on top of each FromTable in the FromList.

pack-priv ResultColumnList

Returns:

ResultColumnList representing all referenced columns
genResultColList
()

Build a ResultColumnList based on all of the columns in this FromBaseTable.

pack-priv ResultColumnList

Returns:

ResultColumnList List of result columns from this table.
getAllResultColumns
(TableName
The qualifier on the "*"
allTableName
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.getAllResultColumns.

Return a ResultColumnList with all of the columns in this table.

private StoreCostController
public String
private void
private int
pack-priv boolean

Returns:

Whether or not this FBT represents an EXISTS FBT.
getExistsBaseTable
()

Does this FBT represent an EXISTS FBT.

pack-priv String

Returns:

The exposed name of this table.
getExposedName
()

Overrides org.apache.derby.impl.sql.compile.FromTable.getExposedName.

Get the exposed name for this table, which is the name that can be used to refer to it in the rest of the query.

pack-priv TableName

Returns:

TableName The exposed name of this table.
getExposedTableName
()

Get the exposed table name for this table, which is the name that can be used to refer to it in the rest of the query.

pack-priv CostEstimate

Returns:

The final CostEstimate for this ResultSetNode.
getFinalCostEstimate
()

Overrides org.apache.derby.impl.sql.compile.FromTable.getFinalCostEstimate.

Get the final CostEstimate for this ResultSetNode.

private ConglomerateDescriptor
pack-priv FromTable

Returns:

The FromTable, if any, with the exposed name.
getFromTableByName
(String
The specified name to search for as an exposed name.
name
,
String
Schema name, if non-null.
schemaName
,
boolean
Whether or not we need an exact match on specified schema and table names or match on table id.
exactMatch
)

Overrides org.apache.derby.impl.sql.compile.FromTable.getFromTableByName.

Determine whether or not the specified name is an exposed name in the current query block.

pack-priv ResultColumn

Returns:

A ResultColumn whose expression is the ColumnNode that matches the ColumnReference. Returns null if there is no match.
getMatchingColumn
(ColumnReference
The columnReference whose name we're looking for in the given table.
columnReference
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.getMatchingColumn.

Try to find a ResultColumn in the table represented by this FromBaseTable that matches the name in the given ColumnReference.

private ConglomerateDescriptor
private DataValueDescriptor[]
private int
private StoreCostController
public TableDescriptor
pack-priv TableName

Returns:

a TableName node representing this FromTable.
getTableName
()

Overrides org.apache.derby.impl.sql.compile.FromTable.getTableName.

Return a TableName node representing this FromTable.

pack-priv TableName

Returns:

The table name for this table.
getTableNameField
()

Return the table name for this table.

private String
public int
initialCapacity()

Overrides org.apache.derby.impl.sql.compile.FromTable.initialCapacity.

Implements org.apache.derby.iapi.sql.compile.Optimizable.initialCapacity.

Return the initial capacity of the hash table, for hash join strategy

public boolean
public boolean
isCoveringIndex(ConglomerateDescriptor
ConglomerateDesriptor for index to consider
cd
)

Overrides org.apache.derby.impl.sql.compile.FromTable.isCoveringIndex.

Implements org.apache.derby.iapi.sql.compile.Optimizable.isCoveringIndex.

Return whether or not this is a covering index.

public boolean
pack-priv boolean
isNotExists()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.isNotExists.

Return whether or not this is actually a EBT for NOT EXISTS.

pack-priv boolean

Returns:

Whether or not the underlying ResultSet tree will return a single row.
isOneRowResultSet
()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.isOneRowResultSet.

Return whether or not the underlying ResultSet tree will return a single row, at most.

pack-priv boolean
private boolean
isOneRowResultSet(ConglomerateDescriptor cd, OptimizablePredicateList predList)

Is this a one-row result set with the given conglomerate descriptor?

public boolean
private boolean

Returns:

Whether or not this index is ordered exactly on the specified columns.
isOrdered
(ColumnReference[]
The specified ColumnReference[]
crs
,
ConglomerateDescriptor
The ConglomerateDescriptor for the chosen index.
cd
)

Return whether or not this index is ordered on a permutation of the specified columns.

pack-priv boolean

Returns:

Whether the underlying ResultSet tree is ordered on the specified column.
isOrderedOn
(ColumnReference[]
The specified ColumnReference[]
crs
,
boolean
Whether or not the order of the CRs in the array can be permuted
permuteOrdering
,
List<FromBaseTable>
List that is to be filled with the FromBaseTable
fbtHolder
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.isOrderedOn.

Return whether or not the underlying ResultSet tree is ordered on the specified columns.

pack-priv boolean

Returns:

Whether or not it is possible to do a distinct scan on this ResultSet tree.
isPossibleDistinctScan
(Set<BaseColumnNode>
the set of distinct columns
distinctColumns
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.isPossibleDistinctScan.

Is it possible to do a distinct scan on this ResultSet tree.

private boolean

Returns:

Whether or not this index is ordered exactly on the specified columns.
isStrictlyOrdered
(ColumnReference[]
The specified ColumnReference[]
crs
,
ConglomerateDescriptor
The ConglomerateDescriptor for the chosen index.
cd
)

Return whether or not this index is ordered on a permutation of the specified columns.

public boolean
isTargetTable()

Overrides org.apache.derby.impl.sql.compile.FromTable.isTargetTable.

Implements org.apache.derby.iapi.sql.compile.Optimizable.isTargetTable.

Is the optimizable the target table of an update or delete?

private boolean
public boolean
legalJoinOrder(JBitSet
The tables that have been placed so far in the join order.
assignedTableMap
)

Overrides org.apache.derby.impl.sql.compile.FromTable.legalJoinOrder.

Implements org.apache.derby.iapi.sql.compile.Optimizable.legalJoinOrder.

Can this Optimizable appear at the current location in the join order.

public float
loadFactor()

Overrides org.apache.derby.impl.sql.compile.FromTable.loadFactor.

Implements org.apache.derby.iapi.sql.compile.Optimizable.loadFactor.

Return the load factor of the hash table, for hash join strategy

pack-priv boolean
LOJ_reorderable(int numTables)

Overrides org.apache.derby.impl.sql.compile.FromTable.LOJ_reorderable.

no LOJ reordering for base table.

pack-priv JBitSet
private int

Returns:

The relative 0-based column position.
mapAbsoluteToRelativeColumnPosition
(int
The absolute 0-based column position.
absolutePosition
)

Convert an absolute to a relative 0-based column position.

private ResultSetNode
mapTableAsVTI(TableDescriptor td, String correlationName, ResultColumnList resultColumns, Properties tableProperties, ContextManager cm)

Return a node that represents invocation of the virtual table for the given table descriptor.

pack-priv boolean
markAsCursorTargetTable()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.markAsCursorTargetTable.

Mark this ResultSetNode as the target table of an updatable cursor.

pack-priv void
markForDistinctScan()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.markForDistinctScan.

Mark the underlying scan as a distinct scan.

pack-priv void
markUpdated(ResultColumnList
A ResultColumnList representing the columns to be updated.
updateColumns
)

Mark as updatable all the columns in the result column list of this FromBaseTable that match the columns in the given update column list.

public boolean
private ResultColumnList

Returns:

A new ResultColumnList that reflects the columns in the index.
newResultColumns
(ResultColumnList
The original list of columns, which reflects the columns in the base table.
oldColumns
,
ConglomerateDescriptor
The ConglomerateDescriptor, which describes the index that the new ResultColumnList will reflect.
idxCD
,
ConglomerateDescriptor
The ConglomerateDescriptor for the base heap
heapCD
,
boolean
Whether or not to clone the RCs
cloneRCs
)

Create a new ResultColumnList to reflect the columns in the index described by the given ConglomerateDescriptor.

public boolean
nextAccessPath(Optimizer
Optimizer to use.
optimizer
,
OptimizablePredicateList
The predicate list for this optimizable. The optimizer always passes null, and it is up to the optimizable object to pass along its own predicate list, if appropriate, when delegating this method.
predList
,
RowOrdering
The row ordering for all the outer tables in the join order. This method will add the ordering of the next access path to the given RowOrdering.
rowOrdering
)

Overrides org.apache.derby.impl.sql.compile.FromTable.nextAccessPath.

Implements org.apache.derby.iapi.sql.compile.Optimizable.nextAccessPath.

Choose the next access path to evaluate for this Optimizable.

public CostEstimate
optimizeIt(Optimizer
Optimizer to use.
optimizer
,
OptimizablePredicateList
The predicate list to optimize against
predList
,
CostEstimate
The CostEstimate for the outer tables in the join order, telling how many times this Optimizable will be scanned.
outerCost
,
RowOrdering
The row ordering for all the tables in the join order, including this one.
rowOrdering
)

Overrides org.apache.derby.impl.sql.compile.FromTable.optimizeIt.

Implements org.apache.derby.iapi.sql.compile.Optimizable.optimizeIt.

Choose the best access path for this Optimizable.

pack-priv ResultSetNode

Returns:

ResultSetNode at top of preprocessed tree.
preprocess
(int
The number of tables in the DML Statement
numTables
,
GroupByList
The group by list, if any
gbl
,
FromList
The from list, if any
fromList
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.preprocess.

Preprocess a ResultSetNode - this currently means: o Generating a referenced table map for each ResultSetNode.

public void
pullOptPredicates(OptimizablePredicateList
The list to put the pulled predicates in.
optimizablePredicates
)

Overrides org.apache.derby.impl.sql.compile.FromTable.pullOptPredicates.

Implements org.apache.derby.iapi.sql.compile.Optimizable.pullOptPredicates.

Pull all the OptimizablePredicates from this Optimizable and put them in the given OptimizablePredicateList.

private void
public boolean
pushOptPredicate(OptimizablePredicate
OptimizablePredicate to push down.
optimizablePredicate
)

Overrides org.apache.derby.impl.sql.compile.FromTable.pushOptPredicate.

Implements org.apache.derby.iapi.sql.compile.Optimizable.pushOptPredicate.

Push an OptimizablePredicate down, if this node accepts it.

private boolean

Returns:

true if qualified, false if not
qualifiesForStatisticsUpdateCheck
(TableDescriptor
the table to check
td
)

Tells if the given table qualifies for a statistics update check in the current configuration.

public boolean

Returns:

true if references SESSION schema tables, else false
referencesSessionSchema
()

Overrides org.apache.derby.impl.sql.compile.QueryTreeNode.referencesSessionSchema.

Return true if the node references SESSION schema tables (temporary or permanent)

pack-priv boolean

Returns:

true if found, else false
referencesTarget
(String
Table name (String) to search for.
name
,
boolean
Whether or not name is for a base table
baseTable
)

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.referencesTarget.

Search to see if a query references the specifed table name.

private double
scanCostAfterSelectivity(double originalScanCost, double initialPositionCost, double selectivity, boolean anotherIndexUnique)

pack-priv void
setExistsBaseTable(boolean
Whether or not an EXISTS FBT.
existsBaseTable
,
JBitSet
The dependency map for the EXISTS FBT.
dependencyMap
,
boolean
Whether or not for NOT EXISTS, more specifically.
isNotExists
)

Set whether or not this FBT represents an EXISTS FBT.

private void
setLockingBasedOnThreshold(Optimizer optimizer, double rowsTouched)

pack-priv void
setRefActionInfo(long fkIndexConglomId, int[] fkColArray, String parentResultSetId, boolean dependentScan)

Overrides org.apache.derby.impl.sql.compile.QueryTreeNode.setRefActionInfo.

set the Information gathered from the parent table that is required to perform a referential action on dependent table.

pack-priv void
setRowLocationColumnName(String rowLocationColumnName)

Set the name of the row location column

pack-priv void
setTableProperties(Properties
The new table properties.
tableProperties
)

Set the table properties for this table.

public void
startOptimizing(Optimizer optimizer, RowOrdering rowOrdering)

Overrides org.apache.derby.impl.sql.compile.FromTable.startOptimizing.

Implements org.apache.derby.iapi.sql.compile.Optimizable.startOptimizing.

Begin the optimization process for this Optimizable.

protected boolean

Returns:

Whether or not the columns marked as true are a superset
supersetOfUniqueIndex
(boolean[]
The columns to consider
eqCols
)

Determine whether or not the columns marked as true in the passed in array are a superset of any unique index on this table.

protected boolean

Returns:

Whether or not the columns marked as true for one at least one table are a superset
supersetOfUniqueIndex
(JBitSet[]
The columns to consider
tableColMap
)

Determine whether or not the columns marked as true in the passed in join table matrix are a superset of any single column unique index on this table.

public String

Returns:

This object as a String
toString
()

Overrides org.apache.derby.impl.sql.compile.FromTable.toString.

Convert this object to a String.

public double
uniqueJoin(OptimizablePredicateList
The predicate list to check
predList
)

Overrides org.apache.derby.impl.sql.compile.FromTable.uniqueJoin.

Implements org.apache.derby.iapi.sql.compile.Optimizable.uniqueJoin.

Does this optimizable have a uniqueness condition on the given predicate list, and if so, how many unique keys will be returned per scan.

pack-priv int

Returns:

The lock mode
updateTargetLockMode
()

Overrides org.apache.derby.impl.sql.compile.ResultSetNode.updateTargetLockMode.

Get the lock mode for the target table heap of an update or delete statement.

public void
verifyProperties(DataDictionary
The DataDictionary to use.
dDictionary
)

Overrides org.apache.derby.impl.sql.compile.FromTable.verifyProperties.

Implements org.apache.derby.iapi.sql.compile.Optimizable.verifyProperties.

Verify that the Properties list with optimizer overrides, if specified, is valid

Inherited from org.apache.derby.impl.sql.compile.FromTable:
assignCostEstimatecolumnsAreUpdatableconsiderSortAvoidancePathdecrementLevelfeasibleJoinStrategyfillInReferencedTableMapflattengetBestAccessPathgetBestSortAvoidancePathgetCorrelationNamegetCostEstimategetCurrentAccessPathgetLevelgetMergeTableIDgetNamegetNumColumnsReturnedgetOrigTableNamegetPropertiesgetResultColumnsForListgetSchemaDescriptorgetSchemaDescriptorgetScratchCostEstimategetTableNumbergetTrulyTheBestAccessPathgetUserSpecifiedJoinStrategyhashKeyColumnshasLargeObjectColumnshasTableNumberinitAccessPathsisFlattenableJoinNodeisJoinColumnForRightOuterJoinmarkUpdatableByCursormaxCapacitymodifyAccessPathneedsSpecialRCLBindingoptimizeSubqueriespushExpressionsrememberAsBestrememberJoinStrategyAsBestrememberSortAvoidancePathresetJoinStrategiessetCostEstimateCostsetHashKeyColumnssetLevelsetMergeTableIDsetOrigTableNamesetPropertiessetTableNumbersupportsMultipleInstantiationstellRowOrderingAboutConstantColumnstransformOuterJoinsupdateBestPlanMap