Class RewriteMultiJoinConditionRule


  • @Enclosing
    public class RewriteMultiJoinConditionRule
    extends org.apache.calcite.plan.RelRule<RewriteMultiJoinConditionRule.RewriteMultiJoinConditionRuleConfig>
    Planner rule to apply transitive closure on MultiJoin for equi-join predicates.

    e.g. MJ(A, B, C) ON A.a1=B.b1 AND B.b1=C.c1 → MJ(A, B, C) ON A.a1=B.b1 AND B.b1=C.c1 AND A.a1=C.c1

    The advantage of applying this rule is that it increases the choice of join reorder; at the same time, the disadvantage is that it will use more CPU for additional join predicates.

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      static interface  RewriteMultiJoinConditionRule.RewriteMultiJoinConditionRuleConfig
      Rule configuration.
      • Nested classes/interfaces inherited from class org.apache.calcite.plan.RelRule

        org.apache.calcite.plan.RelRule.Config, org.apache.calcite.plan.RelRule.Done, org.apache.calcite.plan.RelRule.MatchHandler<R extends org.apache.calcite.plan.RelOptRule>, org.apache.calcite.plan.RelRule.OperandBuilder, org.apache.calcite.plan.RelRule.OperandDetailBuilder<R extends org.apache.calcite.rel.RelNode>, org.apache.calcite.plan.RelRule.OperandTransform
      • Nested classes/interfaces inherited from class org.apache.calcite.plan.RelOptRule

        org.apache.calcite.plan.RelOptRule.ConverterRelOptRuleOperand
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static RewriteMultiJoinConditionRule INSTANCE  
      • Fields inherited from class org.apache.calcite.plan.RelRule

        config
      • Fields inherited from class org.apache.calcite.plan.RelOptRule

        description, operands, relBuilderFactory
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean matches​(org.apache.calcite.plan.RelOptRuleCall call)  
      void onMatch​(org.apache.calcite.plan.RelOptRuleCall call)  
      • Methods inherited from class org.apache.calcite.plan.RelOptRule

        any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
    • Method Detail

      • matches

        public boolean matches​(org.apache.calcite.plan.RelOptRuleCall call)
        Overrides:
        matches in class org.apache.calcite.plan.RelOptRule
      • onMatch

        public void onMatch​(org.apache.calcite.plan.RelOptRuleCall call)
        Specified by:
        onMatch in class org.apache.calcite.plan.RelOptRule