| Interface | Description |
|---|---|
| FilterJoinRule.Predicate |
Predicate that returns whether a filter is valid in the ON clause of a
join for this particular kind of join.
|
| PushProjector.ExprCondition |
A functor that replies true or false for a given expression.
|
| Class | Description |
|---|---|
| AbstractJoinExtractFilterRule | |
| AbstractMaterializedViewRule | |
| AbstractMaterializedViewRule.Edge |
Edge for graph
|
| AbstractMaterializedViewRule.EquivalenceClasses |
Class representing an equivalence class, i.e., a set of equivalent columns
|
| AbstractMaterializedViewRule.MaterializedViewAggregateRule |
Materialized view rewriting for aggregate
|
| AbstractMaterializedViewRule.MaterializedViewJoinRule |
Materialized view rewriting for join
|
| AbstractMaterializedViewRule.MaterializedViewOnlyAggregateRule |
Rule that matches Aggregate.
|
| AbstractMaterializedViewRule.MaterializedViewOnlyFilterRule |
Rule that matches Filter.
|
| AbstractMaterializedViewRule.MaterializedViewOnlyJoinRule |
Rule that matches Join.
|
| AbstractMaterializedViewRule.MaterializedViewProjectAggregateRule |
Rule that matches Project on Aggregate.
|
| AbstractMaterializedViewRule.MaterializedViewProjectFilterRule |
Rule that matches Project on Filter.
|
| AbstractMaterializedViewRule.MaterializedViewProjectJoinRule |
Rule that matches Project on Join.
|
| AbstractMaterializedViewRule.NodeLineage |
Class to encapsulate expression lineage details
|
| AbstractMaterializedViewRule.ViewPartialRewriting |
View partitioning result
|
| AggregateExpandDistinctAggregatesRule |
Planner rule that expands distinct aggregates
(such as
COUNT(DISTINCT x)) from a
Aggregate. |
| AggregateExtractProjectRule | |
| AggregateFilterTransposeRule | |
| AggregateJoinTransposeRule | |
| AggregateJoinTransposeRule.Side |
Work space for an input to a join.
|
| AggregateProjectMergeRule | |
| AggregateProjectPullUpConstantsRule |
Planner rule that removes constant keys from an
Aggregate. |
| AggregateReduceFunctionsRule |
Planner rule that reduces aggregate functions in
Aggregates to simpler forms. |
| AggregateRemoveRule |
Planner rule that removes
a
Aggregate
if it computes no aggregate functions
(that is, it is implementing SELECT DISTINCT)
and the underlying relational expression is already distinct. |
| AggregateStarTableRule |
Planner rule that matches an
Aggregate on
top of a StarTable.StarTableScan. |
| AggregateUnionAggregateRule | |
| AggregateUnionTransposeRule | |
| AggregateValuesRule | |
| CalcMergeRule |
Planner rule that merges a
LogicalCalc onto a
LogicalCalc. |
| CalcRelSplitter | |
| CalcRelSplitter.HighestUsageFinder |
Builds an array of the highest level which contains an expression which
uses each expression as an input.
|
| CalcRelSplitter.ImplementTester |
Visitor which returns whether an expression can be implemented in a given
type of relational expression.
|
| CalcRelSplitter.InputToCommonExprConverter |
Shuttle which converts every reference to an input field in an expression
to a reference to a common sub-expression.
|
| CalcRelSplitter.MaxInputFinder |
Finds the highest level used by any of the inputs of a given expression.
|
| CalcRelSplitter.RelType |
Type of relational expression.
|
| CalcRemoveRule |
Planner rule that removes a trivial
LogicalCalc. |
| CalcSplitRule | |
| CoerceInputsRule |
CoerceInputsRule pre-casts inputs to a particular type.
|
| DateRangeRules |
Collection of planner rules that convert
EXTRACT(timeUnit FROM dateTime) = constant,
FLOOR(dateTime to timeUnit = constant} and
CEIL(dateTime to timeUnit = constant} to
dateTime BETWEEN lower AND upper. |
| DateRangeRules.ExtractFinder |
Visitor that searches for calls to
EXTRACT, FLOOR or
CEIL, building a list of distinct time units. |
| DateRangeRules.ExtractShuttle |
Walks over an expression, replacing calls to
EXTRACT, FLOOR and CEIL with date ranges. |
| DateRangeRules.FilterDateRangeRule |
Rule that converts EXTRACT, FLOOR and CEIL in a
Filter into a date
range. |
| EquiJoin | Deprecated |
| FilterAggregateTransposeRule | |
| FilterCalcMergeRule |
Planner rule that merges a
LogicalFilter and a
LogicalCalc. |
| FilterCorrelateRule | |
| FilterJoinRule |
Planner rule that pushes filters above and
within a join node into the join node and/or its children nodes.
|
| FilterJoinRule.FilterIntoJoinRule |
Rule that tries to push filter expressions into a join
condition and into the inputs of the join.
|
| FilterJoinRule.JoinConditionPushRule |
Rule that pushes parts of the join condition to its inputs.
|
| FilterMergeRule |
Planner rule that combines two
LogicalFilters. |
| FilterMultiJoinMergeRule | |
| FilterProjectTransposeRule |
Planner rule that pushes
a
LogicalFilter
past a LogicalProject. |
| FilterRemoveIsNotDistinctFromRule |
Planner rule that replaces
IS NOT DISTINCT FROM
in a LogicalFilter
with logically equivalent operations. |
| FilterSetOpTransposeRule | |
| FilterTableFunctionTransposeRule |
Planner rule that pushes
a
LogicalFilter
past a LogicalTableFunctionScan. |
| FilterTableScanRule |
Planner rule that converts
a
Filter
on a TableScan
of a FilterableTable
or a ProjectableFilterableTable
to a Bindables.BindableTableScan. |
| FilterToCalcRule |
Planner rule that converts a
LogicalFilter to a
LogicalCalc. |
| IntersectToDistinctRule | |
| JoinAddRedundantSemiJoinRule |
Rule to add a semi-join into a join.
|
| JoinAssociateRule |
Planner rule that changes a join based on the associativity rule.
|
| JoinCommuteRule |
Planner rule that permutes the inputs to a
Join. |
| JoinCommuteRule.VariableReplacer |
Walks over an expression, replacing references to fields of the left and
right inputs.
|
| JoinExtractFilterRule | |
| JoinProjectTransposeRule |
Planner rule that matches a
Join one of whose inputs is a
LogicalProject, and
pulls the project up. |
| JoinPushExpressionsRule |
Planner rule that pushes down expressions in "equal" join condition.
|
| JoinPushThroughJoinRule |
Rule that pushes the right input of a join into through the left input of
the join, provided that the left input is also a join.
|
| JoinPushTransitivePredicatesRule | |
| JoinToCorrelateRule |
Rule that converts a
LogicalJoin
into a LogicalCorrelate, which can
then be implemented using nested loops. |
| JoinToMultiJoinRule |
Planner rule to flatten a tree of
LogicalJoins
into a single MultiJoin with N inputs. |
| JoinUnionTransposeRule | |
| LoptJoinTree |
Utility class used to store a
Join tree
and the factors that make up the tree. |
| LoptJoinTree.BinaryTree |
Simple binary tree class that stores an id in the leaf nodes and keeps
track of the parent LoptJoinTree object associated with the binary tree.
|
| LoptJoinTree.Leaf |
Binary tree node that has no children.
|
| LoptJoinTree.Node |
Binary tree node that has two children.
|
| LoptMultiJoin |
Utility class that keeps track of the join factors that
make up a
MultiJoin. |
| LoptMultiJoin.Edge |
Information about a join-condition.
|
| LoptOptimizeJoinRule |
Planner rule that implements the heuristic planner for determining optimal
join orderings.
|
| LoptSemiJoinOptimizer |
Implements the logic for determining the optimal
semi-joins to be used in processing joins in a query.
|
| LoptSemiJoinOptimizer.FemLocalIndex |
Dummy class to allow code to compile.
|
| LoptSemiJoinOptimizer.LcsIndexOptimizer |
Dummy class to allow code to compile.
|
| LoptSemiJoinOptimizer.LcsTable |
Dummy class to allow code to compile.
|
| LoptSemiJoinOptimizer.LcsTableScan |
Dummy class to allow code to compile.
|
| LoptSemiJoinOptimizer.LucidDbSpecialOperators |
Dummy class to allow code to compile.
|
| MaterializedViewFilterScanRule | |
| MultiJoin |
A MultiJoin represents a join of N inputs, whereas regular Joins
represent strictly binary joins.
|
| MultiJoinOptimizeBushyRule |
Planner rule that finds an approximately optimal ordering for join operators
using a heuristic algorithm.
|
| MultiJoinOptimizeBushyRule.JoinVertex |
Participant in a join which is itself a join.
|
| MultiJoinOptimizeBushyRule.LeafVertex |
Relation participating in a join.
|
| MultiJoinOptimizeBushyRule.Vertex |
Participant in a join (relation or join).
|
| MultiJoinProjectTransposeRule |
MultiJoinProjectTransposeRule implements the rule for pulling
LogicalProjects that are on top of a
MultiJoin and beneath a
LogicalJoin so the
LogicalProject appears above the
LogicalJoin. |
| ProjectCalcMergeRule |
Planner rule which merges a
LogicalProject and a
LogicalCalc. |
| ProjectFilterTransposeRule | |
| ProjectJoinTransposeRule | |
| ProjectMergeRule | |
| ProjectMultiJoinMergeRule | |
| ProjectRemoveRule |
Planner rule that,
given a
Project node that
merely returns its input, converts the node into its child. |
| ProjectSetOpTransposeRule |
Planner rule that pushes
a
LogicalProject
past a SetOp. |
| ProjectSortTransposeRule | |
| ProjectTableScanRule |
Planner rule that converts a
Project
on a TableScan
of a ProjectableFilterableTable
to a Bindables.BindableTableScan. |
| ProjectToCalcRule |
Rule to convert a
LogicalProject to a
LogicalCalc |
| ProjectToWindowRule |
Planner rule that slices a
Project
into sections which contain windowed
aggregate functions and sections which do not. |
| ProjectToWindowRule.CalcToWindowRule |
Instance of the rule that applies to a
Calc that contains
windowed aggregates and converts it into a mixture of
LogicalWindow and Calc. |
| ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule |
Instance of the rule that can be applied to a
Project and that produces, in turn,
a mixture of LogicalProject
and LogicalWindow. |
| ProjectToWindowRule.WindowedAggRelSplitter |
Splitter that distinguishes between windowed aggregation expressions
(calls to
RexOver) and ordinary expressions. |
| ProjectWindowTransposeRule |
Planner rule that pushes
a
LogicalProject
past a LogicalWindow. |
| PruneEmptyRules |
Collection of rules which remove sections of a query plan known never to
produce any rows.
|
| PruneEmptyRules.RemoveEmptySingleRule |
Planner rule that converts a single-rel (e.g.
|
| PushProjector |
PushProjector is a utility class used to perform operations used in push
projection rules.
|
| PushProjector.ExprConditionImpl |
Implementation of
PushProjector.ExprCondition. |
| ReduceDecimalsRule |
ReduceDecimalsRule is a rule which reduces decimal operations (such as casts
or arithmetic) into operations involving more primitive types (such as longs
and doubles).
|
| ReduceExpressionsRule |
Collection of planner rules that apply various simplifying transformations on
RexNode trees.
|
| ReduceExpressionsRule.CalcReduceExpressionsRule |
Rule that reduces constants inside a
Calc. |
| ReduceExpressionsRule.CaseShuttle |
Shuttle that pushes predicates into a CASE.
|
| ReduceExpressionsRule.FilterReduceExpressionsRule |
Rule that reduces constants inside a
Filter. |
| ReduceExpressionsRule.JoinReduceExpressionsRule |
Rule that reduces constants inside a
Join. |
| ReduceExpressionsRule.ProjectReduceExpressionsRule |
Rule that reduces constants inside a
Project. |
| ReduceExpressionsRule.ReducibleExprLocator |
Helper class used to locate expressions that either can be reduced to
literals or contain redundant casts.
|
| ReduceExpressionsRule.RexReplacer |
Replaces expressions with their reductions.
|
| SemiJoinFilterTransposeRule | |
| SemiJoinJoinTransposeRule | |
| SemiJoinProjectTransposeRule | |
| SemiJoinRemoveRule |
Planner rule that removes a
SemiJoins
from a join tree. |
| SemiJoinRule | |
| SemiJoinRule.JoinToSemiJoinRule |
SemiJoinRule that matches a Join with an empty Aggregate as its right
child.
|
| SemiJoinRule.ProjectToSemiJoinRule |
SemiJoinRule that matches a Project on top of a Join with an Aggregate
as its right child.
|
| SortJoinTransposeRule | |
| SortProjectTransposeRule | |
| SortRemoveRule |
Planner rule that removes
a
Sort if its input is already sorted. |
| SortUnionTransposeRule | |
| SubQueryRemoveRule |
Transform that converts IN, EXISTS and scalar sub-queries into joins.
|
| SubQueryRemoveRule.ReplaceSubQueryShuttle |
Shuttle that replaces occurrences of a given
RexSubQuery with a replacement
expression. |
| TableScanRule |
Planner rule that converts a
LogicalTableScan to the result
of calling RelOptTable.toRel(org.apache.calcite.plan.RelOptTable.ToRelContext). |
| UnionEliminatorRule |
UnionEliminatorRule checks to see if its possible to optimize a
Union call by eliminating the Union operator altogether in the case the call
consists of only one input. |
| UnionMergeRule | |
| UnionPullUpConstantsRule |
Planner rule that pulls up constants through a Union operator.
|
| UnionToDistinctRule | |
| ValuesReduceRule |
Planner rule that folds projections and filters into an underlying
LogicalValues. |
| ValuesReduceRule.MyRexShuttle |
Shuttle that converts inputs to literals.
|
| Enum | Description |
|---|---|
| AbstractMaterializedViewRule.MatchModality |
Complete, view partial, or query partial.
|
| ReduceExpressionsRule.ReducibleExprLocator.Constancy |
Whether an expression is constant, and if so, whether it can be
reduced to a simpler constant.
|
| Exception | Description |
|---|---|
| CalcRelSplitter.CannotImplement |
Control exception for
CalcRelSplitter.ImplementTester. |
Consider this package to be the "standard library" of planner rules. Most of the common rewrites that you would want to perform on logical relational expressions, or generically on any data source, are present, and have been well tested.
Of course, the library is never complete, and contributions are welcome.
Not present are rules specific to a particular data source: look in that data source's adapter.
Also out of the scope of this package are rules that support a particular operation, such as decorrelation or recognizing materialized views. Those are defined along with the algorithm.
For
org.apache.calcite.sql
is an object model for SQL expressions
org.apache.calcite.rex
is an object model for relational row expressions
org.apache.calcite.plan
provides an optimizer interface.Copyright © 2012–2018 The Apache Software Foundation. All rights reserved.