| org.apache.derby.iapi.sql.compile.OptimizablePredicateList
All known Subclasses: org.apache.derby.impl.sql.compile.PredicateList,
OptimizablePredicateList | public interface OptimizablePredicateList (Code) | | OptimizablePredicateList provides services for optimizing a table in a query.
RESOLVE - the methods for this interface need to get defined.
|
Method Summary | |
void | addOptPredicate(OptimizablePredicate optPredicate) Add the given OptimizablePredicate to the end of this list. | void | classify(Optimizable optTable, ConglomerateDescriptor cd) Classify the predicates in this list according to the given
table and conglomerate. | public void | copyPredicatesToOtherList(OptimizablePredicateList otherList) Non-destructive copy of all of the predicates from this list to the
other list. | void | generateQualifiers(ExpressionClassBuilderInterface acb, MethodBuilder mb, Optimizable optTable, boolean absolute) Generate the qualifiers for a scan. | void | generateStartKey(ExpressionClassBuilderInterface acb, MethodBuilder mb, Optimizable optTable) Generate the start key for a heap or index scan. | void | generateStopKey(ExpressionClassBuilderInterface acb, MethodBuilder mb, Optimizable optTable) Generate the stop key for a heap or index scan. | public OptimizablePredicate | getOptPredicate(int n) Return the nth OptimizablePredicate in the list.
Parameters: n - "index" (0 based) into the list. | boolean | hasOptimizableEqualityPredicate(Optimizable optTable, int columnNumber, boolean isNullOkay) | boolean | hasOptimizableEquijoin(Optimizable optTable, int columnNumber) Is there an optimizable equijoin on the specified column?
Parameters: optTable - The optimizable the column comes from. Parameters: columnNumber - The column number within the base table. | public boolean | isRedundantPredicate(int predNum) Return whether or not the specified entry in the list is a redundant
predicate. | public void | markAllPredicatesQualifiers() Mark all of the predicates as Qualifiers and set the numberOfQualifiers
to reflect this. | void | pushUsefulPredicates(Optimizable optTable) Determine which predicates in this list are useful for limiting
the scan on the given table using its best conglomerate. | void | putOptimizableEqualityPredicateFirst(Optimizable optTable, int columnNumber) Find the optimizable equality predicate on the specified column and make
it the first predicate in this list. | void | removeOptPredicate(int predCtr) Remove the OptimizablePredicate at the specified index (0-based) from the list. | public boolean | sameStartStopPosition() Can we use the same key for both the start and stop key. | public double | selectivity(Optimizable optTable) calculate the selectivity for a set of predicates. | public void | setPredicatesAndProperties(OptimizablePredicateList otherList) Sets the given list to have the same elements as this one, and
the same properties as this one (number of qualifiers and start
and stop predicates. | public int | size() Return the number of OptimizablePredicates in the list. | int | startOperator(Optimizable optTable) Get the start operator for the given Optimizable for a heap or
index scan. | int | stopOperator(Optimizable optTable) Get the stop operator for the given Optimizable for a heap or
index scan. | public void | transferAllPredicates(OptimizablePredicateList otherList) Transfer all the predicates from this list to the given list. | public void | transferPredicates(OptimizablePredicateList otherList, JBitSet referencedTableMap, Optimizable table) Transfer the predicates whose referenced set is contained by the
specified referencedTableMap from this list to the other list. | boolean | useful(Optimizable optTable, ConglomerateDescriptor cd) Return true if this predicate list is useful for limiting the scan on
the given table using the given conglomerate. |
addOptPredicate | void addOptPredicate(OptimizablePredicate optPredicate)(Code) | | Add the given OptimizablePredicate to the end of this list.
Parameters: optPredicate - The predicate to add |
classify | void classify(Optimizable optTable, ConglomerateDescriptor cd) throws StandardException(Code) | | Classify the predicates in this list according to the given
table and conglomerate. Each predicate can be a start key, stop key,
and/or qualifier, or it can be none of the above. This method
also orders the predicates to match the order of the columns
in a keyed conglomerate. No ordering is done for heaps.
Parameters: optTable - The Optimizable table for which to classifythe predicates in this list. Parameters: cd - The ConglomerateDescriptor for which to classifythe predicates in this list. exception: StandardException - Thrown on error |
copyPredicatesToOtherList | public void copyPredicatesToOtherList(OptimizablePredicateList otherList) throws StandardException(Code) | | Non-destructive copy of all of the predicates from this list to the
other list.
This is useful when splitting out a set of predicates from a larger
set, like when generating a HashScanResultSet.
Parameters: otherList - The predicateList to xfer to exception: StandardException - Thrown on error |
generateQualifiers | void generateQualifiers(ExpressionClassBuilderInterface acb, MethodBuilder mb, Optimizable optTable, boolean absolute) throws StandardException(Code) | | Generate the qualifiers for a scan. This method generates an array
of Qualifiers, and fills them in with calls to the factory method
for generating Qualifiers in the constructor for the activation.
It stores the array of Qualifiers in a field in the activation, and
returns a reference to that field.
If there are no qualifiers, it initializes the array of Qualifiers
to null.
Parameters: acb - The ExpressionClassBuilderInterface for the class we are building Parameters: mb - The method the generated code is going into Parameters: optTable - The Optimizable table the Qualifiers are on Parameters: absolute - Generate absolute column positions if true,else relative column positions (within the underlyingrow) exception: StandardException - Thrown on error |
getOptPredicate | public OptimizablePredicate getOptPredicate(int n)(Code) | | Return the nth OptimizablePredicate in the list.
Parameters: n - "index" (0 based) into the list. OptimizablePredicate The nth OptimizablePredicate in the list. |
hasOptimizableEqualityPredicate | boolean hasOptimizableEqualityPredicate(Optimizable optTable, int columnNumber, boolean isNullOkay) throws StandardException(Code) | | Is there an optimizable equality predicate on the specified column?
Parameters: optTable - The optimizable the column comes from. Parameters: columnNumber - The column number within the base table. Parameters: isNullOkay - boolean, whether or not the IS NULL operatorsatisfies the search Whether or not there is an optimizable equality predicate on the specified column. exception: StandardException - Thrown on error |
hasOptimizableEquijoin | boolean hasOptimizableEquijoin(Optimizable optTable, int columnNumber) throws StandardException(Code) | | Is there an optimizable equijoin on the specified column?
Parameters: optTable - The optimizable the column comes from. Parameters: columnNumber - The column number within the base table. Whether or not there is an optimizable equijoin on the specified column. exception: StandardException - Thrown on error |
isRedundantPredicate | public boolean isRedundantPredicate(int predNum)(Code) | | Return whether or not the specified entry in the list is a redundant
predicate. This is useful for selectivity calculations because we
do not want redundant predicates included in the selectivity calculation.
Parameters: predNum - The entry in the list Whether or not the specified entry in the list is a redundant predicate. |
markAllPredicatesQualifiers | public void markAllPredicatesQualifiers()(Code) | | Mark all of the predicates as Qualifiers and set the numberOfQualifiers
to reflect this. This is useful for hash joins where all of the
predicates in the list to be evaluated during the probe into the
hash table on a next are qualifiers.
|
pushUsefulPredicates | void pushUsefulPredicates(Optimizable optTable) throws StandardException(Code) | | Determine which predicates in this list are useful for limiting
the scan on the given table using its best conglomerate. Remove
those predicates from this list and push them down to the given
Optimizable table. The predicates are pushed down in the order of
the index columns that they qualify. Also, the predicates are
"marked" as start predicates, stop predicates, or qualifier
predicates. Finally, the start and stop operators are set in
the given Optimizable.
Parameters: optTable - An Optimizable for the table in question exception: StandardException - Thrown on error |
putOptimizableEqualityPredicateFirst | void putOptimizableEqualityPredicateFirst(Optimizable optTable, int columnNumber) throws StandardException(Code) | | Find the optimizable equality predicate on the specified column and make
it the first predicate in this list. This is useful for hash joins where
Qualifier[0] is assumed to be on the hash key.
Parameters: optTable - The optimizable the column comes from. Parameters: columnNumber - The column number within the base table. exception: StandardException - Thrown on error |
removeOptPredicate | void removeOptPredicate(int predCtr) throws StandardException(Code) | | Remove the OptimizablePredicate at the specified index (0-based) from the list.
Parameters: predCtr - The index. exception: StandardException - Thrown on error |
sameStartStopPosition | public boolean sameStartStopPosition() throws StandardException(Code) | | Can we use the same key for both the start and stop key.
This is possible when doing an exact match on an index
where there are no other sargable predicates.
Whether or not we can use the same key for both the start and stop key. exception: StandardException - Thrown on error |
selectivity | public double selectivity(Optimizable optTable) throws StandardException(Code) | | calculate the selectivity for a set of predicates.
If statistics exist for the predicates this method uses the
statistics. If statistics do not exist, then simply call
selectivity for each of the predicates and return the result.
Parameters: optTable - the Optimizable that the predicate list restricts. |
setPredicatesAndProperties | public void setPredicatesAndProperties(OptimizablePredicateList otherList) throws StandardException(Code) | | Sets the given list to have the same elements as this one, and
the same properties as this one (number of qualifiers and start
and stop predicates.
Parameters: otherList - The list to set the same as this one. exception: StandardException - Thrown on error |
size | public int size()(Code) | | Return the number of OptimizablePredicates in the list.
integer The number of OptimizablePredicates in the list. |
startOperator | int startOperator(Optimizable optTable)(Code) | | Get the start operator for the given Optimizable for a heap or
index scan.
|
stopOperator | int stopOperator(Optimizable optTable)(Code) | | Get the stop operator for the given Optimizable for a heap or
index scan.
|
transferPredicates | public void transferPredicates(OptimizablePredicateList otherList, JBitSet referencedTableMap, Optimizable table) throws StandardException(Code) | | Transfer the predicates whose referenced set is contained by the
specified referencedTableMap from this list to the other list.
This is useful when splitting out a set of predicates from a larger
set, like when generating a HashScanResultSet.
Parameters: otherList - The predicateList to xfer to Parameters: referencedTableMap - The table map to check against Parameters: table - The table to order the new predicatesagainst exception: StandardException - Thrown on error |
useful | boolean useful(Optimizable optTable, ConglomerateDescriptor cd) throws StandardException(Code) | | Return true if this predicate list is useful for limiting the scan on
the given table using the given conglomerate.
Parameters: optTable - An Optimizable for the table in question Parameters: cd - A ConglomerateDescriptor for the conglomerate in question true if this predicate list can limit the scan exception: StandardException - Thrown on error |
|
|