Package org.apache.calcite.rel.rules
Interface TransformationRule
- All Known Subinterfaces:
SubstitutionRule
- All Known Implementing Classes:
AbstractJoinExtractFilterRule,AggregateCaseToFilterRule,AggregateExpandDistinctAggregatesRule,AggregateExtractProjectRule,AggregateFilterTransposeRule,AggregateJoinJoinRemoveRule,AggregateJoinRemoveRule,AggregateJoinTransposeRule,AggregateMergeRule,AggregateMinMaxToLimitRule,AggregateProjectMergeRule,AggregateProjectPullUpConstantsRule,AggregateProjectStarTableRule,AggregateReduceFunctionsRule,AggregateRemoveRule,AggregateStarTableRule,AggregateUnionAggregateRule,AggregateUnionTransposeRule,AggregateValuesRule,CalcMergeRule,CalcRemoveRule,CalcSplitRule,CoerceInputsRule,DateRangeRules.FilterDateRangeRule,DphypJoinReorderRule,EnumerableProjectToCalcRule,ExchangeRemoveConstantKeysRule,ExpandDisjunctionForJoinInputsRule,ExpandDisjunctionForTableRule,FilterAggregateTransposeRule,FilterCalcMergeRule,FilterCorrelateRule,FilterJoinRule,FilterJoinRule.FilterIntoJoinRule,FilterJoinRule.JoinConditionPushRule,FilterMergeRule,FilterMultiJoinMergeRule,FilterProjectTransposeRule,FilterRemoveIsNotDistinctFromRule,FilterSampleTransposeRule,FilterSetOpTransposeRule,FilterSortTransposeRule,FilterTableFunctionTransposeRule,FilterToCalcRule,FilterWindowTransposeRule,IntersectReorderRule,IntersectToDistinctRule,IntersectToExistsRule,IntersectToSemiJoinRule,JoinAddRedundantSemiJoinRule,JoinAssociateRule,JoinCommuteRule,JoinConditionExpandIsNotDistinctFromRule,JoinDeriveIsNotNullFilterRule,JoinExpandOrToUnionRule,JoinExtractFilterRule,JoinProjectTransposeRule,JoinPushExpressionsRule,JoinPushThroughJoinRule,JoinPushTransitivePredicatesRule,JoinToCorrelateRule,JoinToHyperGraphRule,JoinToMultiJoinRule,JoinUnionTransposeRule,LoptOptimizeJoinRule,MatchRule,MaterializedViewFilterScanRule,MeasureRules.AggregateMeasure2Rule,MeasureRules.AggregateMeasureRule,MeasureRules.FilterSortMeasureRule,MeasureRules.ProjectMeasureRule,MeasureRules.ProjectSortMeasureRule,MinusToAntiJoinRule,MinusToDistinctRule,MinusToFilterRule,MultiJoinOptimizeBushyRule,MultiJoinProjectTransposeRule,ProjectAggregateMergeRule,ProjectCalcMergeRule,ProjectCorrelateTransposeRule,ProjectFilterTransposeRule,ProjectJoinJoinRemoveRule,ProjectJoinRemoveRule,ProjectJoinTransposeRule,ProjectMergeRule,ProjectMultiJoinMergeRule,ProjectOverSumToSum0Rule,ProjectRemoveRule,ProjectSetOpTransposeRule,ProjectToCalcRule,ProjectToWindowRule,ProjectToWindowRule.CalcToWindowRule,ProjectToWindowRule.ProjectToLogicalProjectAndWindowRule,ProjectWindowTransposeRule,PruneEmptyRules.PruneEmptyRule,PruneEmptyRules.RemoveEmptySingleRule,ReduceDecimalsRule,ReduceExpressionsRule,ReduceExpressionsRule.CalcReduceExpressionsRule,ReduceExpressionsRule.FilterReduceExpressionsRule,ReduceExpressionsRule.JoinReduceExpressionsRule,ReduceExpressionsRule.ProjectReduceExpressionsRule,ReduceExpressionsRule.WindowReduceExpressionsRule,SampleToFilterRule,SemiJoinFilterTransposeRule,SemiJoinJoinTransposeRule,SemiJoinProjectTransposeRule,SemiJoinRemoveRule,SemiJoinRule,SemiJoinRule.JoinOnUniqueToSemiJoinRule,SemiJoinRule.JoinToSemiJoinRule,SemiJoinRule.ProjectToSemiJoinRule,SetOpToFilterRule,SingleValuesOptimizationRules.PruneSingleValueRule,SortJoinCopyRule,SortJoinTransposeRule,SortMergeRule,SortProjectTransposeRule,SortRemoveConstantKeysRule,SortRemoveRedundantRule,SortRemoveRule,SortUnionTransposeRule,StreamRules.DeltaAggregateTransposeRule,StreamRules.DeltaFilterTransposeRule,StreamRules.DeltaJoinTransposeRule,StreamRules.DeltaProjectTransposeRule,StreamRules.DeltaSortTransposeRule,StreamRules.DeltaTableScanRule,StreamRules.DeltaTableScanToEmptyRule,StreamRules.DeltaUnionTransposeRule,SubQueryRemoveRule,TableScanRule,UnionEliminatorRule,UnionMergeRule,UnionPullUpConstantsRule,UnionToDistinctRule,UnionToValuesRule,ValuesReduceRule
public interface TransformationRule
Logical transformation rule, only logical operator can be rule operand,
and only generate logical alternatives. It is only visible to
VolcanoPlanner, HepPlanner will ignore this interface.
That means, in HepPlanner, the rule that implements
TransformationRule can still match with physical operator of
PhysicalNode and generate physical alternatives.
But in VolcanoPlanner, TransformationRule doesn't match
with physical operator that implements PhysicalNode. It is not
allowed to generate physical operators in TransformationRule,
unless you are using it in HepPlanner.
- See Also: