com.lucidera.opt
Class LoptMetadataQuery

java.lang.Object
  extended by org.eigenbase.rel.metadata.RelMetadataQuery
      extended by 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

Constructor Summary
LoptMetadataQuery()
           
 
Method Summary
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.
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.
 
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
 

Constructor Detail

LoptMetadataQuery

public LoptMetadataQuery()
Method Detail

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 expression
filters - 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 SemiJoinRels past.

Parameters:
rel - the relational expression
iOutputColumn - 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.