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.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.

AggregateExpandDistinctAggregatesRule 
Planner rule that expands distinct aggregates
(such as
COUNT(DISTINCT x) ) from a
Aggregate . 
AggregateExtractProjectRule  
AggregateFilterTransposeRule  
AggregateJoinTransposeRule  
AggregateProjectMergeRule  
AggregateProjectPullUpConstantsRule 
Planner rule that removes constant keys from an
Aggregate . 
AggregateReduceFunctionsRule 
Planner rule that reduces aggregate functions in
Aggregate s 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.RelType 
Type of relational expression.

CalcRemoveRule 
Planner rule that removes a trivial
LogicalCalc . 
CalcSplitRule  
CoerceInputsRule 
CoerceInputsRule precasts 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.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
LogicalFilter s. 
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 semijoin 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 . 
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
LogicalJoin s
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 . 
LoptOptimizeJoinRule 
Planner rule that implements the heuristic planner for determining optimal
join orderings.

LoptSemiJoinOptimizer 
Implements the logic for determining the optimal
semijoins to be used in processing joins in a query.

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.

MultiJoinProjectTransposeRule 
MultiJoinProjectTransposeRule implements the rule for pulling
LogicalProject s 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 . 
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 singlerel (e.g.

PushProjector 
PushProjector is a utility class used to perform operations used in push
projection rules.

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
SemiJoin s
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 subqueries into joins.

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 . 
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.