|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Optimizable provides services for optimizing a table in a query.
Method Summary | |
boolean |
considerSortAvoidancePath()
Check whether this optimizable's sort avoidance path should be considered. |
int |
convertAbsoluteToRelativeColumnPosition(int absolutePosition)
Convert an absolute to a relative 0-based column position. |
CostEstimate |
estimateCost(OptimizablePredicateList predList,
ConglomerateDescriptor cd,
CostEstimate outerCost,
Optimizer optimizer,
RowOrdering rowOrdering)
Estimate the cost of scanning this Optimizable using the given predicate list with the given conglomerate. |
boolean |
feasibleJoinStrategy(OptimizablePredicateList predList,
Optimizer optimizer)
Is the current proposed join strategy for this optimizable feasible given the predicate list? |
boolean |
forUpdate()
Return true if this is the target table of an update |
java.lang.String |
getBaseTableName()
Get the table name of this Optimizable. |
AccessPath |
getBestAccessPath()
Get the best access path for this Optimizable. |
AccessPath |
getBestSortAvoidancePath()
Get the best sort-avoidance path for this Optimizable. |
AccessPath |
getCurrentAccessPath()
Get the current access path under consideration for this Optimizable |
DataDictionary |
getDataDictionary()
Get the DataDictionary from this Optimizable. |
java.lang.String |
getName()
Get the (exposed) name of this Optimizable |
int |
getNumColumnsReturned()
Get the number of the number of columns returned by this Optimizable. |
java.util.Properties |
getProperties()
Get the Properties list, if any, associated with this optimizalbe. |
JBitSet |
getReferencedTableMap()
Get the map of referenced tables for this Optimizable. |
int |
getResultSetNumber()
Get this Optimizable's result set number |
TableDescriptor |
getTableDescriptor()
Get the table descriptor for this table (if any). |
int |
getTableNumber()
Get this Optimizable's table number |
AccessPath |
getTrulyTheBestAccessPath()
Get the best access path overall for this Optimizable. |
int[] |
hashKeyColumns()
Return the hash key column numbers, for hash join strategy |
boolean |
hasTableNumber()
Return true if this Optimizable has a table number |
void |
initAccessPaths(Optimizer optimizer)
Init the access paths for this optimizable. |
int |
initialCapacity()
Return the initial capacity of the hash table, for hash join strategy |
boolean |
isBaseTable()
Tell whether this Optimizable represents a base table |
boolean |
isCoveringIndex(ConglomerateDescriptor cd)
Return whether or not this is a covering index. |
boolean |
isMaterializable()
Tell whether this Optimizable is materializable |
boolean |
isOneRowScan()
Will the optimizable return at most 1 row per scan? |
boolean |
isTargetTable()
Is the optimizable the target table of an update or delete? |
boolean |
legalJoinOrder(JBitSet assignedTableMap)
Can this Optimizable appear at the current location in the join order. |
float |
loadFactor()
Return the load factor of the hash table, for hash join strategy |
int |
maxCapacity(JoinStrategy joinStrategy,
int maxMemoryPerTable)
Return the maximum capacity of the hash table, for hash join strategy |
boolean |
memoryUsageOK(double rowCount,
int maxMemoryPerTable)
|
Optimizable |
modifyAccessPath(JBitSet outerTables)
Modify the access path for this Optimizable, as necessary. |
boolean |
nextAccessPath(Optimizer optimizer,
OptimizablePredicateList predList,
RowOrdering rowOrdering)
Choose the next access path to evaluate for this Optimizable. |
CostEstimate |
optimizeIt(Optimizer optimizer,
OptimizablePredicateList predList,
CostEstimate outerCost,
RowOrdering rowOrdering)
Choose the best access path for this Optimizable. |
void |
pullOptPredicates(OptimizablePredicateList optimizablePredicates)
Pull all the OptimizablePredicates from this Optimizable and put them in the given OptimizablePredicateList. |
boolean |
pushOptPredicate(OptimizablePredicate optimizablePredicate)
Push an OptimizablePredicate down, if this node accepts it. |
void |
rememberAsBest(int planType)
Remember the current access path as the best one (so far). |
void |
rememberJoinStrategyAsBest(AccessPath ap)
Remember the current join strategy as the best one so far in this join order. |
void |
rememberSortAvoidancePath()
Mark this optimizable so that its sort avoidance path will be considered. |
void |
setHashKeyColumns(int[] columnNumbers)
Set the hash key column numbers, for hash join strategy |
void |
setProperties(java.util.Properties tableProperties)
Set the Properties list for this optimizalbe. |
void |
startOptimizing(Optimizer optimizer,
RowOrdering rowOrdering)
Begin the optimization process for this Optimizable. |
boolean |
supportsMultipleInstantiations()
Tell whether this Optimizable can be instantiated multiple times |
double |
uniqueJoin(OptimizablePredicateList predList)
Does this optimizable have a uniqueness condition on the given predicate list, and if so, how many unique keys will be returned per scan. |
void |
verifyProperties(DataDictionary dDictionary)
Verify that the Properties list with optimizer overrides, if specified, is valid |
Method Detail |
public boolean nextAccessPath(Optimizer optimizer, OptimizablePredicateList predList, RowOrdering rowOrdering) throws StandardException
optimizer
- Optimizer to use.predList
- 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.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.
StandardException
- Thrown on errorpublic CostEstimate optimizeIt(Optimizer optimizer, OptimizablePredicateList predList, CostEstimate outerCost, RowOrdering rowOrdering) throws StandardException
optimizer
- Optimizer to use.predList
- The predicate list to optimize againstouterCost
- The CostEstimate for the outer tables in the join order,
telling how many times this Optimizable will be scanned.rowOrdering
- The row ordering for all the tables in the
join order, including this one.
StandardException
- Thrown on errorpublic AccessPath getCurrentAccessPath()
public AccessPath getBestAccessPath()
public AccessPath getBestSortAvoidancePath()
public AccessPath getTrulyTheBestAccessPath()
public void rememberSortAvoidancePath()
public boolean considerSortAvoidancePath()
public void rememberJoinStrategyAsBest(AccessPath ap)
public TableDescriptor getTableDescriptor()
public JBitSet getReferencedTableMap()
public boolean pushOptPredicate(OptimizablePredicate optimizablePredicate) throws StandardException
StandardException
- Thrown on errorpublic void pullOptPredicates(OptimizablePredicateList optimizablePredicates) throws StandardException
optimizablePredicates
- The list to put the pulled predicates
in.
StandardException
- Thrown on errorpublic Optimizable modifyAccessPath(JBitSet outerTables) throws StandardException
outerTables
- Bit map of the tables that are outer to this one
in the join order.
StandardException
- Thrown on errorpublic boolean isCoveringIndex(ConglomerateDescriptor cd) throws StandardException
cd
- ConglomerateDesriptor for index to consider
StandardException
- Thrown on errorpublic java.util.Properties getProperties()
public void setProperties(java.util.Properties tableProperties)
tableProperties
- The Properties list for this optimizable.
public void verifyProperties(DataDictionary dDictionary) throws StandardException
dDictionary
- The DataDictionary to use.
StandardException
- Thrown on errorpublic java.lang.String getName() throws StandardException
StandardException
- Thrown on errorpublic java.lang.String getBaseTableName()
public int convertAbsoluteToRelativeColumnPosition(int absolutePosition)
absolutePosition
- The absolute 0-based column position for the column.
public void rememberAsBest(int planType) throws StandardException
planType
- The type of plan (one of Optimizer.NORMAL_PLAN
or Optimizer.SORT_AVOIDANCE_PLAN)
StandardException
- thrown on error.public void startOptimizing(Optimizer optimizer, RowOrdering rowOrdering)
public CostEstimate estimateCost(OptimizablePredicateList predList, ConglomerateDescriptor cd, CostEstimate outerCost, Optimizer optimizer, RowOrdering rowOrdering) throws StandardException
predList
- The predicate list to optimize againstcd
- The conglomerate descriptor to get the cost ofouterCost
- The estimated cost of the part of the plan outer
to this optimizable.optimizer
- The optimizer to use to help estimate the costrowOrdering
- The row ordering for all the tables in the
join order, including this one.
StandardException
- Thrown on errorOptimizablePredicateList.classify(org.apache.derby.iapi.sql.compile.Optimizable, org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor)
public boolean isBaseTable()
public boolean isMaterializable() throws StandardException
StandardException
- Thrown on errorpublic boolean supportsMultipleInstantiations()
public int getResultSetNumber()
public int getTableNumber()
public boolean hasTableNumber()
public boolean forUpdate()
public int initialCapacity()
public float loadFactor()
public int[] hashKeyColumns()
public void setHashKeyColumns(int[] columnNumbers)
public boolean feasibleJoinStrategy(OptimizablePredicateList predList, Optimizer optimizer) throws StandardException
predList
- The predicate list that has been pushed down to
this optimizableoptimizer
- The optimizer to use.
StandardException
- Thrown on errorpublic boolean memoryUsageOK(double rowCount, int maxMemoryPerTable) throws StandardException
rowCount
- maxMemoryPerTable
-
StandardException
- standard error policypublic int maxCapacity(JoinStrategy joinStrategy, int maxMemoryPerTable) throws StandardException
maxMemoryPerTable
- The maximum number of bytes to be used. Ignored if the user has set a maximum
number of rows for the Optimizable.
StandardException
- Standard error policypublic boolean legalJoinOrder(JBitSet assignedTableMap)
assignedTableMap
- The tables that have been placed so far in the join order.
public DataDictionary getDataDictionary() throws StandardException
StandardException
- Thrown on errorpublic boolean isTargetTable()
public int getNumColumnsReturned()
public boolean isOneRowScan() throws StandardException
StandardException
- Thrown on errorpublic void initAccessPaths(Optimizer optimizer)
optimizer
- The optimizer being used.
public double uniqueJoin(OptimizablePredicateList predList) throws StandardException
predList
- The predicate list to check
StandardException
- Thrown on error
|
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 |