| Package | Description |
|---|---|
| org.apache.calcite.adapter.elasticsearch |
Base classes for a query provider based on an Elasticsearch DB.
|
| org.apache.calcite.adapter.enumerable |
Query optimizer rules for Java calling convention.
|
| org.apache.calcite.adapter.jdbc |
Query provider based on a JDBC data source.
|
| org.apache.calcite.interpreter |
Provides an implementation of relational expressions using an interpreter.
|
| org.apache.calcite.plan |
Defines interfaces for constructing rule-based optimizers of
relational expressions.
|
| org.apache.calcite.plan.hep |
Provides a heuristic planner implementation for the interfaces in
org.apache.calcite.plan. |
| org.apache.calcite.plan.volcano |
Optimizes relational expressions.
|
| org.apache.calcite.rel |
Defines relational expressions.
|
| org.apache.calcite.rel.convert |
Defines relational expressions and rules for converting between calling
conventions.
|
| org.apache.calcite.rel.core |
Defines core relational expressions.
|
| org.apache.calcite.rel.logical |
Defines logical relational expressions.
|
| org.apache.calcite.rel.metadata |
Defines metadata interfaces and utilities for relational
expressions.
|
| org.apache.calcite.rel.rules |
Provides a core set of planner rules.
|
| org.apache.calcite.schema.impl |
Utilities to help implement Calcite's SPIs.
|
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
ElasticsearchFilter.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
ElasticsearchSort.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
ElasticsearchProject.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
ElasticsearchToEnumerableConverter.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
ElasticsearchTableScan.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
EnumerableSemiJoin.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
EnumerableInterpreter.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
EnumerableJoin.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
EnumerableThetaJoin.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
EnumerableMergeJoin.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
EnumerableWindow.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
JdbcToEnumerableConverter.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
JdbcRules.JdbcJoin.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
JdbcRules.JdbcCalc.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
JdbcRules.JdbcProject.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
JdbcRules.JdbcUnion.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
JdbcRules.JdbcTableModify.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
double |
JdbcRules.JdbcJoin.estimateRowCount(RelMetadataQuery mq) |
double |
JdbcRules.JdbcCalc.estimateRowCount(RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
Bindables.BindableTableScan.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
Bindables.BindableWindow.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
| Modifier and Type | Field and Description |
|---|---|
private RelMetadataQuery |
RelOptCluster.mq |
| Modifier and Type | Method and Description |
|---|---|
RelMetadataQuery |
RelOptCluster.getMetadataQuery()
Returns the current RelMetadataQuery.
|
RelMetadataQuery |
RelOptRuleCall.getMetadataQuery()
Returns the current RelMetadataQuery, to be used for instance by
RelOptRule.onMatch(RelOptRuleCall). |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
RelOptPlanner.getCost(RelNode rel,
RelMetadataQuery mq)
Computes the cost of a RelNode.
|
RelOptCost |
AbstractRelOptPlanner.getCost(RelNode rel,
RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
HepRelVertex.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
double |
HepRelVertex.estimateRowCount(RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
private double |
RuleQueue.computeImportanceOfChild(RelMetadataQuery mq,
RelSubset child,
RelSubset parent)
Returns the importance of a child to a parent.
|
RelOptCost |
RelSubset.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
AbstractConverter.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
double |
RelSubset.estimateRowCount(RelMetadataQuery mq) |
RelOptCost |
VolcanoPlanner.getCost(RelNode rel,
RelMetadataQuery mq) |
(package private) void |
RelSubset.propagateCostImprovements(VolcanoPlanner planner,
RelMetadataQuery mq,
RelNode rel,
Set<RelSubset> activeSet)
Checks whether a relexp has made its subset cheaper, and if it so,
recursively checks whether that subset's parents have gotten cheaper.
|
(package private) void |
RelSubset.propagateCostImprovements0(VolcanoPlanner planner,
RelMetadataQuery mq,
RelNode rel,
Set<RelSubset> activeSet) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
AbstractRelNode.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
RelOptCost |
RelNode.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq)
Returns the cost of this plan (not including children).
|
double |
AbstractRelNode.estimateRowCount(RelMetadataQuery mq) |
double |
RelNode.estimateRowCount(RelMetadataQuery mq)
Returns an estimate of the number of rows this relational expression will
return.
|
double |
SingleRel.estimateRowCount(RelMetadataQuery mq) |
<M extends Metadata> |
AbstractRelNode.metadata(Class<M> metadataClass,
RelMetadataQuery mq) |
<M extends Metadata> |
RelNode.metadata(Class<M> metadataClass,
RelMetadataQuery mq)
Returns a metadata interface.
|
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
ConverterImpl.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
LogicalTableFunctionScan.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
| Modifier and Type | Field and Description |
|---|---|
protected static RelMetadataQuery |
RelMetadataQuery.EMPTY |
private RelMetadataQuery |
RelMdUtil.CardOfProjExpr.mq |
| Modifier and Type | Method and Description |
|---|---|
static RelMetadataQuery |
RelMetadataQuery.instance()
Returns an instance of RelMetadataQuery.
|
| Modifier and Type | Method and Description |
|---|---|
static boolean |
RelMdUtil.areColumnsDefinitelyUnique(RelMetadataQuery mq,
RelNode rel,
ImmutableBitSet colMask)
Returns true if the columns represented in a bit mask are definitely
known to form a unique column set.
|
static boolean |
RelMdUtil.areColumnsDefinitelyUnique(RelMetadataQuery mq,
RelNode rel,
List<RexInputRef> columnRefs) |
static boolean |
RelMdUtil.areColumnsDefinitelyUniqueWhenNullsFiltered(RelMetadataQuery mq,
RelNode rel,
ImmutableBitSet colMask)
Returns true if the columns represented in a bit mask are definitely
known to form a unique column set, when nulls have been filtered from
the columns.
|
static boolean |
RelMdUtil.areColumnsDefinitelyUniqueWhenNullsFiltered(RelMetadataQuery mq,
RelNode rel,
List<RexInputRef> columnRefs) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Aggregate rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Converter rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Correlate rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Exchange rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Filter rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(HepRelVertex rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Intersect rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Join rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Minus rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Project rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
static Boolean |
RelMdUtil.areColumnsUnique(RelMetadataQuery mq,
RelNode rel,
List<RexInputRef> columnRefs) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(RelNode rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls)
Catch-all implementation for
BuiltInMetadata.ColumnUniqueness.areColumnsUnique(ImmutableBitSet, boolean),
invoked using reflection, for any relational expression not
handled by a more specific method. |
Boolean |
BuiltInMetadata.ColumnUniqueness.Handler.areColumnsUnique(RelNode r,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(RelSubset rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(SemiJoin rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(SetOp rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Sort rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(TableScan rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
Boolean |
RelMdColumnUniqueness.areColumnsUnique(Values rel,
RelMetadataQuery mq,
ImmutableBitSet columns,
boolean ignoreNulls) |
static Boolean |
RelMdUtil.areColumnsUniqueWhenNullsFiltered(RelMetadataQuery mq,
RelNode rel,
List<RexInputRef> columnRefs) |
List<Double> |
RelMdSize.averageColumnSizes(Aggregate rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Exchange rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Filter rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Intersect rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Join rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Minus rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Project rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Size.averageColumnSizes(),
invoked using reflection. |
List<Double> |
BuiltInMetadata.Size.Handler.averageColumnSizes(RelNode r,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(SemiJoin rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Sort rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(TableScan rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Union rel,
RelMetadataQuery mq) |
List<Double> |
RelMdSize.averageColumnSizes(Values rel,
RelMetadataQuery mq) |
private List<Double> |
RelMdSize.averageJoinColumnSizes(Join rel,
RelMetadataQuery mq,
boolean semijoin) |
Double |
RelMdSize.averageRowSize(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Size.averageRowSize(),
invoked using reflection. |
Double |
BuiltInMetadata.Size.Handler.averageRowSize(RelNode r,
RelMetadataQuery mq) |
M |
UnboundMetadata.bind(RelNode rel,
RelMetadataQuery mq) |
static List<RelCollation> |
RelMdCollation.calc(RelMetadataQuery mq,
RelNode input,
RexProgram program)
Helper method to determine a
Calc's collation. |
static RelDistribution |
RelMdDistribution.calc(RelMetadataQuery mq,
RelNode input,
RexProgram program)
Helper method to determine a
Calc's distribution. |
static Double |
RelMdUtil.cardOfProjExpr(RelMetadataQuery mq,
Project rel,
RexNode expr)
Computes the cardinality of a particular expression from the projection
list.
|
static boolean |
RelMdUtil.checkInputForCollationAndLimit(RelMetadataQuery mq,
RelNode input,
RelCollation collation,
RexNode offset,
RexNode fetch)
Returns whether a relational expression is already sorted and has fewer
rows than the sum of offset and limit.
|
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Calc calc,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(EnumerableMergeJoin join,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Filter rel,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(HepRelVertex rel,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Project project,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Collation.collations(),
invoked using reflection, for any relational expression not
handled by a more specific method. |
com.google.common.collect.ImmutableList<RelCollation> |
BuiltInMetadata.Collation.Handler.collations(RelNode r,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(RelSubset rel,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(SortExchange sort,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Sort sort,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(TableScan scan,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Values values,
RelMetadataQuery mq) |
com.google.common.collect.ImmutableList<RelCollation> |
RelMdCollation.collations(Window rel,
RelMetadataQuery mq) |
static double |
RelMdUtil.computeSemiJoinSelectivity(RelMetadataQuery mq,
RelNode factRel,
RelNode dimRel,
List<Integer> factKeyList,
List<Integer> dimKeyList)
Computes the selectivity of a semijoin filter if it is applied on a fact
table.
|
static double |
RelMdUtil.computeSemiJoinSelectivity(RelMetadataQuery mq,
RelNode factRel,
RelNode dimRel,
SemiJoin rel)
Computes the selectivity of a semijoin filter if it is applied on a fact
table.
|
static double |
RelMdUtil.computeSemiJoinSelectivity(RelMetadataQuery mq,
SemiJoin rel)
Computes the selectivity of a semijoin filter if it is applied on a fact
table.
|
Double |
RelMdMemory.cumulativeMemoryWithinPhase(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Memory.cumulativeMemoryWithinPhase(),
invoked using reflection. |
Double |
BuiltInMetadata.Memory.Handler.cumulativeMemoryWithinPhase(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdMemory.cumulativeMemoryWithinPhaseSplit(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Memory.cumulativeMemoryWithinPhaseSplit(),
invoked using reflection. |
Double |
BuiltInMetadata.Memory.Handler.cumulativeMemoryWithinPhaseSplit(RelNode r,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(BiRel rel,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(Exchange exchange,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(HepRelVertex rel,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(Project project,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(RelNode rel,
RelMetadataQuery mq)
Fallback method to deduce distribution for any relational expression not
handled by a more specific method.
|
RelDistribution |
BuiltInMetadata.Distribution.Handler.distribution(RelNode r,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(SetOp rel,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(SingleRel rel,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(TableScan scan,
RelMetadataQuery mq) |
RelDistribution |
RelMdDistribution.distribution(Values values,
RelMetadataQuery mq) |
static double |
RelMdUtil.estimateFilteredRows(RelNode child,
RexNode condition,
RelMetadataQuery mq) |
static double |
RelMdUtil.estimateFilteredRows(RelNode child,
RexProgram program,
RelMetadataQuery mq) |
static List<RelCollation> |
RelMdCollation.filter(RelMetadataQuery mq,
RelNode input)
Helper method to determine a
Filter's collation. |
static RelDistribution |
RelMdDistribution.filter(RelMetadataQuery mq,
RelNode input)
Helper method to determine a
Filter's distribution. |
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Aggregate agg,
RelMetadataQuery mq)
Extract predicates for an Aggregate.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Exchange exchange,
RelMetadataQuery mq)
Extract predicates for an Exchange.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Filter filter,
RelMetadataQuery mq)
Add the Filter condition to the list obtained from the input.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(HepRelVertex rel,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Join join,
RelMetadataQuery mq)
Add the Join condition to the list obtained from the input.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Project project,
RelMetadataQuery mq)
Extract predicates for a project.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.AllPredicates.getAllPredicates(),
invoked using reflection. |
RelOptPredicateList |
BuiltInMetadata.AllPredicates.Handler.getAllPredicates(RelNode r,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(RelSubset rel,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Sort sort,
RelMetadataQuery mq)
Extract predicates for a Sort.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(TableScan table,
RelMetadataQuery mq)
Extract predicates for a table scan.
|
RelOptPredicateList |
RelMdAllPredicates.getAllPredicates(Union union,
RelMetadataQuery mq)
Extract predicates for a Union.
|
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Aggregate rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Exchange rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Filter rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Join rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Project rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(RelNode rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
BuiltInMetadata.ColumnOrigin.Handler.getColumnOrigins(RelNode r,
RelMetadataQuery mq,
int outputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(SetOp rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(Sort rel,
RelMetadataQuery mq,
int iOutputColumn) |
Set<RelColumnOrigin> |
RelMdColumnOrigins.getColumnOrigins(TableFunctionScan rel,
RelMetadataQuery mq,
int iOutputColumn) |
RelOptCost |
RelMdPercentageOriginalRows.getCumulativeCost(EnumerableInterpreter rel,
RelMetadataQuery mq) |
RelOptCost |
RelMdPercentageOriginalRows.getCumulativeCost(RelNode rel,
RelMetadataQuery mq) |
RelOptCost |
BuiltInMetadata.CumulativeCost.Handler.getCumulativeCost(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Aggregate rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Exchange rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Filter rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Join rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Project rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(RelNode rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate)
Catch-all implementation for
BuiltInMetadata.DistinctRowCount.getDistinctRowCount(ImmutableBitSet, RexNode),
invoked using reflection. |
Double |
BuiltInMetadata.DistinctRowCount.Handler.getDistinctRowCount(RelNode r,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(RelSubset rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(SemiJoin rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Sort rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Union rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Double |
RelMdDistinctRowCount.getDistinctRowCount(Values rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey,
RexNode predicate) |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Aggregate rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from
Aggregate. |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Exchange rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from Exchange.
|
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Filter rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from Filter.
|
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(HepRelVertex rel,
RelMetadataQuery mq,
RexNode outputExpression) |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Join rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from
Join. |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Project rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from Project.
|
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(RelNode rel,
RelMetadataQuery mq,
RexNode outputExpression) |
Set<RexNode> |
BuiltInMetadata.ExpressionLineage.Handler.getExpressionLineage(RelNode r,
RelMetadataQuery mq,
RexNode expression) |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(RelSubset rel,
RelMetadataQuery mq,
RexNode outputExpression) |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Sort rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from Sort.
|
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(TableScan rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from
TableScan. |
Set<RexNode> |
RelMdExpressionLineage.getExpressionLineage(Union rel,
RelMetadataQuery mq,
RexNode outputExpression)
Expression lineage from
Union. |
static Double |
RelMdUtil.getJoinDistinctRowCount(RelMetadataQuery mq,
RelNode joinRel,
JoinRelType joinType,
ImmutableBitSet groupKey,
RexNode predicate,
boolean useMaxNdv)
Computes the number of distinct rows for a set of keys returned from a
join.
|
static Double |
RelMdUtil.getJoinPopulationSize(RelMetadataQuery mq,
RelNode joinRel,
ImmutableBitSet groupKey)
Computes the population size for a set of keys returned from a join
|
static Double |
RelMdUtil.getJoinRowCount(RelMetadataQuery mq,
Join join,
RexNode condition)
Returns an estimate of the number of rows returned by a
Join. |
Double |
RelMdMaxRowCount.getMaxRowCount(Aggregate rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(EnumerableLimit rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Filter rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Intersect rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Join rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Minus rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Project rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(RelNode rel,
RelMetadataQuery mq) |
Double |
BuiltInMetadata.MaxRowCount.Handler.getMaxRowCount(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(RelSubset rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Sort rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(TableScan rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Union rel,
RelMetadataQuery mq) |
Double |
RelMdMaxRowCount.getMaxRowCount(Values values,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Aggregate rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(EnumerableLimit rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Filter rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Intersect rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Join rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Minus rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Project rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(RelNode rel,
RelMetadataQuery mq) |
Double |
BuiltInMetadata.MinRowCount.Handler.getMinRowCount(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(RelSubset rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Sort rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(TableScan rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Union rel,
RelMetadataQuery mq) |
Double |
RelMdMinRowCount.getMinRowCount(Values values,
RelMetadataQuery mq) |
static double |
RelMdUtil.getMinusRowCount(RelMetadataQuery mq,
Minus minus)
Returns an estimate of the number of rows returned by a
Minus. |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Aggregate rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Calc rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Filter rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(HepRelVertex rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Intersect rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Join rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Minus rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Project rel,
RelMetadataQuery mq) |
private static com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(RelNode rel,
Class<? extends RelNode> c,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.NodeTypes.getNodeTypes(),
invoked using reflection. |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
BuiltInMetadata.NodeTypes.Handler.getNodeTypes(RelNode r,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(RelSubset rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(SemiJoin rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Sort rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(TableScan rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Union rel,
RelMetadataQuery mq) |
com.google.common.collect.Multimap<Class<? extends RelNode>,RelNode> |
RelMdNodeTypes.getNodeTypes(Values rel,
RelMetadataQuery mq) |
RelOptCost |
RelMdPercentageOriginalRows.getNonCumulativeCost(RelNode rel,
RelMetadataQuery mq) |
RelOptCost |
BuiltInMetadata.NonCumulativeCost.Handler.getNonCumulativeCost(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdPercentageOriginalRows.getPercentageOriginalRows(Aggregate rel,
RelMetadataQuery mq) |
Double |
RelMdPercentageOriginalRows.getPercentageOriginalRows(Join rel,
RelMetadataQuery mq) |
Double |
RelMdPercentageOriginalRows.getPercentageOriginalRows(RelNode rel,
RelMetadataQuery mq) |
Double |
BuiltInMetadata.PercentageOriginalRows.Handler.getPercentageOriginalRows(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdPercentageOriginalRows.getPercentageOriginalRows(Union rel,
RelMetadataQuery mq) |
Double |
RelMdPopulationSize.getPopulationSize(Aggregate rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Exchange rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Filter rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Join rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Project rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(RelNode rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey)
Catch-all implementation for
BuiltInMetadata.PopulationSize.getPopulationSize(ImmutableBitSet),
invoked using reflection. |
Double |
BuiltInMetadata.PopulationSize.Handler.getPopulationSize(RelNode r,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(SemiJoin rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Sort rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Union rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
Double |
RelMdPopulationSize.getPopulationSize(Values rel,
RelMetadataQuery mq,
ImmutableBitSet groupKey) |
RelOptPredicateList |
RelMdPredicates.getPredicates(Aggregate agg,
RelMetadataQuery mq)
Infers predicates for an Aggregate.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(Exchange exchange,
RelMetadataQuery mq)
Infers predicates for an Exchange.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(Filter filter,
RelMetadataQuery mq)
Add the Filter condition to the pulledPredicates list from the input.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(HepRelVertex rel,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdPredicates.getPredicates(Join join,
RelMetadataQuery mq)
Infers predicates for a
Join. |
RelOptPredicateList |
RelMdPredicates.getPredicates(Project project,
RelMetadataQuery mq)
Infers predicates for a project.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Predicates.getPredicates(),
invoked using reflection. |
RelOptPredicateList |
BuiltInMetadata.Predicates.Handler.getPredicates(RelNode r,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdPredicates.getPredicates(RelSubset r,
RelMetadataQuery mq) |
RelOptPredicateList |
RelMdPredicates.getPredicates(SemiJoin semiJoin,
RelMetadataQuery mq)
Infers predicates for a
SemiJoin. |
RelOptPredicateList |
RelMdPredicates.getPredicates(Sort sort,
RelMetadataQuery mq)
Infers predicates for a Sort.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(TableScan table,
RelMetadataQuery mq)
Infers predicates for a table scan.
|
RelOptPredicateList |
RelMdPredicates.getPredicates(Union union,
RelMetadataQuery mq)
Infers predicates for a Union.
|
Double |
RelMdRowCount.getRowCount(Aggregate rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Calc rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(EnumerableLimit rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Filter rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Intersect rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Join rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Minus rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Project rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.RowCount.getRowCount(),
invoked using reflection. |
Double |
BuiltInMetadata.RowCount.Handler.getRowCount(RelNode r,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(RelSubset subset,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(SemiJoin rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(SingleRel rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Sort rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(TableScan rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Union rel,
RelMetadataQuery mq) |
Double |
RelMdRowCount.getRowCount(Values rel,
RelMetadataQuery mq) |
Double |
RelMdSelectivity.getSelectivity(Aggregate rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(Filter rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(Project rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(RelNode rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
BuiltInMetadata.Selectivity.Handler.getSelectivity(RelNode r,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(SemiJoin rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(Sort rel,
RelMetadataQuery mq,
RexNode predicate) |
Double |
RelMdSelectivity.getSelectivity(Union rel,
RelMetadataQuery mq,
RexNode predicate) |
static Double |
RelMdUtil.getSemiJoinRowCount(RelMetadataQuery mq,
RelNode left,
RelNode right,
JoinRelType joinType,
RexNode condition)
Returns an estimate of the number of rows returned by a
SemiJoin. |
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Aggregate rel,
RelMetadataQuery mq)
Table references from Aggregate.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Exchange rel,
RelMetadataQuery mq)
Table references from Exchange.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Filter rel,
RelMetadataQuery mq)
Table references from Filter.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(HepRelVertex rel,
RelMetadataQuery mq) |
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Join rel,
RelMetadataQuery mq)
Table references from Join.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Project rel,
RelMetadataQuery mq)
Table references from Project.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(RelNode rel,
RelMetadataQuery mq) |
Set<RexTableInputRef.RelTableRef> |
BuiltInMetadata.TableReferences.Handler.getTableReferences(RelNode r,
RelMetadataQuery mq) |
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(RelSubset rel,
RelMetadataQuery mq) |
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Sort rel,
RelMetadataQuery mq)
Table references from Sort.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(TableScan rel,
RelMetadataQuery mq)
TableScan table reference.
|
Set<RexTableInputRef.RelTableRef> |
RelMdTableReferences.getTableReferences(Union rel,
RelMetadataQuery mq)
Table references from
Union. |
static double |
RelMdUtil.getUnionAllRowCount(RelMetadataQuery mq,
Union rel)
Returns an estimate of the number of rows returned by a
Union
(before duplicates are eliminated). |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Aggregate rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Correlate rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Filter rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Join rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Project rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(RelNode rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
BuiltInMetadata.UniqueKeys.Handler.getUniqueKeys(RelNode r,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(SemiJoin rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(SetOp rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Set<ImmutableBitSet> |
RelMdUniqueKeys.getUniqueKeys(Sort rel,
RelMetadataQuery mq,
boolean ignoreNulls) |
Boolean |
RelMdParallelism.isPhaseTransition(Exchange rel,
RelMetadataQuery mq) |
Boolean |
RelMdParallelism.isPhaseTransition(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Parallelism.isPhaseTransition(),
invoked using reflection. |
Boolean |
BuiltInMetadata.Parallelism.Handler.isPhaseTransition(RelNode r,
RelMetadataQuery mq) |
Boolean |
RelMdParallelism.isPhaseTransition(TableScan rel,
RelMetadataQuery mq) |
Boolean |
RelMdParallelism.isPhaseTransition(Values rel,
RelMetadataQuery mq) |
Boolean |
RelMdExplainVisibility.isVisibleInExplain(RelNode rel,
RelMetadataQuery mq,
SqlExplainLevel explainLevel)
Catch-all implementation for
BuiltInMetadata.ExplainVisibility.isVisibleInExplain(SqlExplainLevel),
invoked using reflection. |
Boolean |
BuiltInMetadata.ExplainVisibility.Handler.isVisibleInExplain(RelNode r,
RelMetadataQuery mq,
SqlExplainLevel explainLevel) |
static List<RelCollation> |
RelMdCollation.limit(RelMetadataQuery mq,
RelNode input)
Helper method to determine a
limit's collation.
|
static RelDistribution |
RelMdDistribution.limit(RelMetadataQuery mq,
RelNode input)
Helper method to determine a
limit's distribution.
|
static RexNode |
RelMdUtil.makeSemiJoinSelectivityRexNode(RelMetadataQuery mq,
SemiJoin rel)
Creates a RexNode that stores a selectivity value corresponding to the
selectivity of a semijoin.
|
Double |
RelMdMemory.memory(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Memory.memory(),
invoked using reflection. |
Double |
BuiltInMetadata.Memory.Handler.memory(RelNode r,
RelMetadataQuery mq) |
static List<RelCollation> |
RelMdCollation.mergeJoin(RelMetadataQuery mq,
RelNode left,
RelNode right,
ImmutableIntList leftKeys,
ImmutableIntList rightKeys)
Helper method to determine a
Join's collation assuming that it
uses a merge-join algorithm. |
static List<RelCollation> |
RelMdCollation.project(RelMetadataQuery mq,
RelNode input,
List<? extends RexNode> projects)
Helper method to determine a
Project's collation. |
static RelDistribution |
RelMdDistribution.project(RelMetadataQuery mq,
RelNode input,
List<? extends RexNode> projects)
Helper method to determine a
Project's collation. |
<M extends Metadata> |
MetadataFactoryImpl.query(RelNode rel,
RelMetadataQuery mq,
Class<M> metadataClazz) |
<M extends Metadata> |
MetadataFactory.query(RelNode rel,
RelMetadataQuery mq,
Class<M> metadataClazz)
Returns a metadata interface to get a particular kind of metadata
from a particular relational expression.
|
static RelDistribution |
RelMdDistribution.sort(RelMetadataQuery mq,
RelNode input)
Helper method to determine a
Sort's distribution. |
Integer |
RelMdParallelism.splitCount(RelNode rel,
RelMetadataQuery mq)
Catch-all implementation for
BuiltInMetadata.Parallelism.splitCount(),
invoked using reflection. |
Integer |
BuiltInMetadata.Parallelism.Handler.splitCount(RelNode r,
RelMetadataQuery mq) |
static List<RelCollation> |
RelMdCollation.values(RelMetadataQuery mq,
RelDataType rowType,
com.google.common.collect.ImmutableList<com.google.common.collect.ImmutableList<RexLiteral>> tuples)
Helper method to determine a
Values's collation. |
static List<RelCollation> |
RelMdCollation.window(RelMetadataQuery mq,
RelNode input,
com.google.common.collect.ImmutableList<Window.Group> groups)
Helper method to determine a
Window's collation. |
| Constructor and Description |
|---|
CardOfProjExpr(RelMetadataQuery mq,
Project rel) |
RelMetadataQuery(JaninoRelMetadataProvider metadataProvider,
RelMetadataQuery prototype) |
| Modifier and Type | Field and Description |
|---|---|
private RelMetadataQuery |
LoptSemiJoinOptimizer.mq |
| Modifier and Type | Method and Description |
|---|---|
private LoptJoinTree |
LoptOptimizeJoinRule.addFactorToTree(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
LoptJoinTree joinTree,
int factorToAdd,
BitSet factorsNeeded,
List<RexNode> filtersToAdd,
boolean selfJoin)
Adds a new factor into the current join tree.
|
private LoptJoinTree |
LoptOptimizeJoinRule.addToTop(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
LoptJoinTree joinTree,
int factorToAdd,
List<RexNode> filtersToAdd,
boolean selfJoin)
Creates a join tree with the new factor added to the top of the tree
|
private static boolean |
LoptOptimizeJoinRule.areSelfJoinKeysUnique(RelMetadataQuery mq,
RelNode leftRel,
RelNode rightRel,
RexNode joinFilters)
Determines if the equality portion of a self-join condition is between
identical keys that are unique.
|
protected abstract AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
Set<RexTableInputRef.RelTableRef> viewTableRefs)
It checks whether the query can be rewritten using the view even though the
query uses additional tables.
|
protected AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.MaterializedViewJoinRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
Set<RexTableInputRef.RelTableRef> viewTableRefs) |
protected AbstractMaterializedViewRule.ViewPartialRewriting |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.compensateViewPartial(RelBuilder relBuilder,
RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode input,
Project topProject,
RelNode node,
Set<RexTableInputRef.RelTableRef> queryTableRefs,
AbstractMaterializedViewRule.EquivalenceClasses queryEC,
Project topViewProject,
RelNode viewNode,
Set<RexTableInputRef.RelTableRef> viewTableRefs) |
private Double |
LoptOptimizeJoinRule.computeJoinCardinality(RelMetadataQuery mq,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
LoptJoinTree joinTree,
List<RexNode> filters,
int factor)
Computes the cardinality of the join columns from a particular factor,
when that factor is joined with another join tree.
|
private LoptJoinTree |
LoptOptimizeJoinRule.createJoinSubtree(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptJoinTree left,
LoptJoinTree right,
RexNode condition,
JoinRelType joinType,
List<RexNode> filtersToAdd,
boolean fullAdjust,
boolean selfJoin)
Creates a LogicalJoin given left and right operands and a join condition.
|
private LoptJoinTree |
LoptOptimizeJoinRule.createOrdering(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
int firstFactor)
Generates a join tree with a specific factor as the first factor in the
join tree
|
private void |
LoptOptimizeJoinRule.findBestOrderings(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
RelOptRuleCall call)
Generates N optimal join orderings.
|
private void |
LoptOptimizeJoinRule.findRemovableOuterJoins(RelMetadataQuery mq,
LoptMultiJoin multiJoin)
Locates all null generating factors whose outer join can be removed.
|
private void |
LoptOptimizeJoinRule.findRemovableSelfJoins(RelMetadataQuery mq,
LoptMultiJoin multiJoin)
Locates pairs of joins that are self-joins where the join can be removed
because the join condition between the two factors is an equality join on
unique keys.
|
protected com.google.common.collect.Multimap<Integer,Integer> |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.generateMapping(RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RelNode node,
RelNode target,
ImmutableBitSet positions,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses sourceEC,
List<RexNode> additionalExprs)
Mapping from node expressions to target expressions.
|
private static AbstractMaterializedViewRule.NodeLineage |
AbstractMaterializedViewRule.generateSwapColumnTableReferencesLineage(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
List<RexNode> nodeExprs)
It swaps the column references and then the table references of the input
expressions using the equivalence classes and the table mapping.
|
private static AbstractMaterializedViewRule.NodeLineage |
AbstractMaterializedViewRule.generateSwapTableColumnReferencesLineage(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
List<RexNode> nodeExprs)
It swaps the table references and then the column references of the input
expressions using the table mapping and the equivalence classes.
|
private int |
LoptOptimizeJoinRule.getBestNextFactor(RelMetadataQuery mq,
LoptMultiJoin multiJoin,
BitSet factorsToAdd,
BitSet factorsAdded,
LoptSemiJoinOptimizer semiJoinOpt,
LoptJoinTree joinTree,
List<RexNode> filtersToAdd)
Determines the best factor to be added next into a join tree.
|
private Map<Integer,RelOptTable> |
LoptOptimizeJoinRule.getSimpleFactors(RelMetadataQuery mq,
LoptMultiJoin multiJoin)
Retrieves join factors that correspond to simple table references.
|
private boolean |
LoptOptimizeJoinRule.isSelfJoinFilterUnique(RelMetadataQuery mq,
LoptMultiJoin multiJoin,
int leftFactor,
int rightFactor,
List<RexNode> joinFilterList)
Determines if the equality join filters between two factors that map to
the same table consist of unique, identical keys.
|
protected abstract boolean |
AbstractMaterializedViewRule.isValidPlan(Project topProject,
RelNode node,
RelMetadataQuery mq) |
protected boolean |
AbstractMaterializedViewRule.MaterializedViewJoinRule.isValidPlan(Project topProject,
RelNode node,
RelMetadataQuery mq) |
protected boolean |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.isValidPlan(Project topProject,
RelNode node,
RelMetadataQuery mq) |
private static boolean |
AbstractMaterializedViewRule.isValidRelNodePlan(RelNode node,
RelMetadataQuery mq)
Currently we only support TableScan - Project - Filter - Join
|
private LoptJoinTree |
LoptOptimizeJoinRule.pushDownFactor(RelMetadataQuery mq,
RelBuilder relBuilder,
LoptMultiJoin multiJoin,
LoptSemiJoinOptimizer semiJoinOpt,
LoptJoinTree joinTree,
int factorToAdd,
BitSet factorsNeeded,
List<RexNode> filtersToAdd,
boolean selfJoin)
Creates a join tree where the new factor is pushed down one of the
operands of the current join tree
|
private static RexNode |
AbstractMaterializedViewRule.rewriteExpression(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode targetNode,
RelNode node,
List<RexNode> nodeExprs,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
boolean swapTableColumn,
RexNode exprToRewrite)
First, the method takes the node expressions
nodeExprs and swaps the table
and column references using the table mapping and the equivalence classes. |
private static List<RexNode> |
AbstractMaterializedViewRule.rewriteExpressions(RexBuilder rexBuilder,
RelMetadataQuery mq,
RelNode targetNode,
RelNode node,
List<RexNode> nodeExprs,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> tableMapping,
AbstractMaterializedViewRule.EquivalenceClasses ec,
boolean swapTableColumn,
List<RexNode> exprsToRewrite)
First, the method takes the node expressions
nodeExprs and swaps the table
and column references using the table mapping and the equivalence classes. |
protected abstract RelNode |
AbstractMaterializedViewRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> viewToQueryTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC)
If the view will be used in a union rewriting, this method is responsible for
rewriting the query branch of the union using the given compensation predicate.
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewJoinRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> viewToQueryTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.rewriteQuery(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
RexNode compensationColumnsEquiPred,
RexNode otherCompensationPred,
Project topProject,
RelNode node,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses viewEC,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
protected abstract RelNode |
AbstractMaterializedViewRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC)
This method is responsible for rewriting the query using the given view query.
|
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewJoinRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
protected RelNode |
AbstractMaterializedViewRule.MaterializedViewAggregateRule.rewriteView(RelBuilder relBuilder,
RexBuilder rexBuilder,
RexSimplify simplify,
RelMetadataQuery mq,
AbstractMaterializedViewRule.MatchModality matchModality,
boolean unionRewriting,
RelNode input,
Project topProject,
RelNode node,
Project topViewProject,
RelNode viewNode,
com.google.common.collect.BiMap<RexTableInputRef.RelTableRef,RexTableInputRef.RelTableRef> queryToViewTableMapping,
AbstractMaterializedViewRule.EquivalenceClasses queryEC) |
private boolean |
LoptOptimizeJoinRule.swapInputs(RelMetadataQuery mq,
LoptMultiJoin multiJoin,
LoptJoinTree left,
LoptJoinTree right,
boolean selfJoin)
Swaps the operands to a join, so the smaller input is on the right.
|
| Constructor and Description |
|---|
LoptSemiJoinOptimizer(RelMetadataQuery mq,
LoptMultiJoin multiJoin,
RexBuilder rexBuilder) |
| Modifier and Type | Method and Description |
|---|---|
RelOptCost |
StarTable.StarTableScan.computeSelfCost(RelOptPlanner planner,
RelMetadataQuery mq) |
Copyright © 2012–2018 The Apache Software Foundation. All rights reserved.