Interface TransformationRule

All Known Subinterfaces:
SubstitutionRule
All Known Implementing Classes:
AbstractJoinExtractFilterRule, AggregateCaseToFilterRule, AggregateExpandDistinctAggregatesRule, AggregateExtractProjectRule, AggregateFilterTransposeRule, AggregateJoinJoinRemoveRule, AggregateJoinRemoveRule, AggregateJoinTransposeRule, AggregateMergeRule, AggregateProjectMergeRule, AggregateProjectPullUpConstantsRule, AggregateProjectStarTableRule, AggregateReduceFunctionsRule, AggregateRemoveRule, AggregateStarTableRule, AggregateUnionAggregateRule, AggregateUnionTransposeRule, AggregateValuesRule, CalcMergeRule, CalcRemoveRule, CalcSplitRule, CoerceInputsRule, DateRangeRules.FilterDateRangeRule, EnumerableProjectToCalcRule, ExchangeRemoveConstantKeysRule, FilterAggregateTransposeRule, FilterCalcMergeRule, FilterCorrelateRule, FilterJoinRule, FilterJoinRule.FilterIntoJoinRule, FilterJoinRule.JoinConditionPushRule, FilterMergeRule, FilterMultiJoinMergeRule, FilterProjectTransposeRule, FilterRemoveIsNotDistinctFromRule, FilterSampleTransposeRule, FilterSetOpTransposeRule, FilterTableFunctionTransposeRule, FilterToCalcRule, FilterWindowTransposeRule, IntersectToDistinctRule, JoinAddRedundantSemiJoinRule, JoinAssociateRule, JoinCommuteRule, JoinDeriveIsNotNullFilterRule, JoinExtractFilterRule, JoinProjectTransposeRule, JoinPushExpressionsRule, JoinPushThroughJoinRule, JoinPushTransitivePredicatesRule, JoinToCorrelateRule, JoinToMultiJoinRule, JoinUnionTransposeRule, LoptOptimizeJoinRule, MatchRule, MaterializedViewFilterScanRule, MinusToDistinctRule, MultiJoinOptimizeBushyRule, MultiJoinProjectTransposeRule, ProjectAggregateMergeRule, ProjectCalcMergeRule, ProjectCorrelateTransposeRule, ProjectFilterTransposeRule, ProjectJoinJoinRemoveRule, ProjectJoinRemoveRule, ProjectJoinTransposeRule, ProjectMergeRule, ProjectMultiJoinMergeRule, 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, 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, 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: