com.lucidera.opt
Class LoptMetadataQuery
java.lang.Object
org.eigenbase.rel.metadata.RelMetadataQuery
com.lucidera.opt.LoptMetadataQuery
public abstract class LoptMetadataQuery
- extends RelMetadataQuery
LoptMetadataQuery defines the relational expression metadata queries which
are custom to LucidDB's optimizer.
- Version:
- $Id: //open/dev/farrago/src/com/lucidera/opt/LoptMetadataQuery.java#7 $
- Author:
- John V. Sichi
Methods inherited from class org.eigenbase.rel.metadata.RelMetadataQuery |
areColumnsUnique, areColumnsUnique, getColumnOrigins, getCumulativeCost, getDistinctRowCount, getNonCumulativeCost, getPercentageOriginalRows, getPopulationSize, getRowCount, getSelectivity, getStatistics, getUniqueKeys, getUniqueKeys, isVisibleInExplain |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LoptMetadataQuery
public LoptMetadataQuery()
getCostWithFilters
public static Double getCostWithFilters(RelNode rel,
RexNode filters)
- Estimates the cost of executing a relational expression, including the
cost of its inputs, given a set of filters which will be applied to its
output. The default implementation assumes that the filters cannot be
used to reduce the processing cost, and will be evaluated above by a
calculator; so the result is the number of rows produced by rel plus the
cumulative cost of its inputs. For expressions such as row scans, more
efficient filter processing may be possible.
- Parameters:
rel
- the relational expressionfilters
- filters to be applied
- Returns:
- estimated cost, or null if no reliable estimate can be determined
getSimpleColumnOrigins
public static Set<RelColumnOrigin> getSimpleColumnOrigins(RelNode rel,
int iOutputColumn)
- Like
RelMetadataQuery.getColumnOrigins(org.eigenbase.rel.RelNode, int)
, for a given output column
of an expression, determines all columns of underlying tables which
contribute to result values. The difference is if the column is derived
from a complex RelNode
, then null is returned instead.
A 'complex RelNode' is a RelNode that we do not push SemiJoinRel
s past.
- Parameters:
rel
- the relational expressioniOutputColumn
- 0-based ordinal for output column of interest
- Returns:
- set of origin columns, or null if this information cannot be
determined (whereas empty set indicates definitely no origin columns at
all) or the column is derived from a complex RelNode.