Class JoinCommuteRule
- All Implemented Interfaces:
- TransformationRule
- 
Nested Class SummaryNested ClassesNested classes/interfaces inherited from class org.apache.calcite.plan.RelRuleRelRule.Done, RelRule.MatchHandler<R extends RelOptRule>, RelRule.OperandBuilder, RelRule.OperandDetailBuilder<R extends RelNode>, RelRule.OperandTransformNested classes/interfaces inherited from class org.apache.calcite.plan.RelOptRuleRelOptRule.ConverterRelOptRuleOperand
- 
Field SummaryFields inherited from class org.apache.calcite.plan.RelOptRuledescription, operands, relBuilderFactory
- 
Constructor SummaryConstructorsModifierConstructorDescriptionJoinCommuteRule(Class<? extends Join> clazz, RelFactories.ProjectFactory projectFactory) Deprecated.JoinCommuteRule(Class<? extends Join> clazz, RelFactories.ProjectFactory projectFactory, boolean swapOuter) Deprecated.JoinCommuteRule(Class<? extends Join> clazz, RelBuilderFactory relBuilderFactory, boolean swapOuter) Deprecated.protectedCreates a JoinCommuteRule.
- 
Method SummaryModifier and TypeMethodDescriptionbooleanmatches(RelOptRuleCall call) Returns whether this rule could possibly match the given operands.voidonMatch(RelOptRuleCall call) Receives notification about a rule match.static @Nullable RelNodeDeprecated.static @Nullable RelNodeDeprecated.static @Nullable RelNodeswap(Join join, boolean swapOuterJoins, RelBuilder relBuilder) Returns a relational expression with the inputs switched round.static RexNodeswapJoinCond(RexNode cond, Join join, RexBuilder rexBuilder) Methods inherited from class org.apache.calcite.plan.RelOptRuleany, convert, convert, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
- 
Constructor Details- 
JoinCommuteRuleCreates a JoinCommuteRule.
- 
JoinCommuteRule@Deprecated public JoinCommuteRule(Class<? extends Join> clazz, RelBuilderFactory relBuilderFactory, boolean swapOuter) Deprecated.
- 
JoinCommuteRule@Deprecated public JoinCommuteRule(Class<? extends Join> clazz, RelFactories.ProjectFactory projectFactory) Deprecated.
- 
JoinCommuteRule@Deprecated public JoinCommuteRule(Class<? extends Join> clazz, RelFactories.ProjectFactory projectFactory, boolean swapOuter) Deprecated.
 
- 
- 
Method Details- 
swapDeprecated.
- 
swapDeprecated.
- 
swapReturns a relational expression with the inputs switched round. Does not modifyjoin. Returns null if the join cannot be swapped (for example, because it is an outer join).- Parameters:
- join- join to be swapped
- swapOuterJoins- whether outer joins should be swapped
- relBuilder- Builder for relational expressions
- Returns:
- swapped join if swapping possible; else null
 
- 
swapJoinCond
- 
matchesDescription copied from class:RelOptRuleReturns whether this rule could possibly match the given operands.This method is an opportunity to apply side-conditions to a rule. The RelOptPlannercalls this method after matching all operands of the rule, and before callingRelOptRule.onMatch(RelOptRuleCall).In implementations of RelOptPlannerwhich may queue up a matchedRelOptRuleCallfor a long time before callingRelOptRule.onMatch(RelOptRuleCall), this method is beneficial because it allows the planner to discard rules earlier in the process.The default implementation of this method returns true. It is acceptable for any implementation of this method to give a false positives, that is, to say that the rule matches the operands but haveRelOptRule.onMatch(RelOptRuleCall)subsequently not generate any successors.The following script is useful to identify rules which commonly produce no successors. You should override this method for these rules: awk ' /Apply rule/ {rule=$4; ruleCount[rule]++;} /generated 0 successors/ {ruleMiss[rule]++;} END { printf "%-30s %s %s\n", "Rule", "Fire", "Miss"; for (i in ruleCount) { printf "%-30s %5d %5d\n", i, ruleCount[i], ruleMiss[i]; } } ' FarragoTrace.log- Overrides:
- matchesin class- RelOptRule
- Parameters:
- call- Rule call which has been determined to match all operands of this rule
- Returns:
- whether this RelOptRule matches a given RelOptRuleCall
 
- 
onMatchDescription copied from class:RelOptRuleReceives notification about a rule match. At the time that this method is called,call.relsholds the set of relational expressions which match the operands to the rule;call.rels[0]is the root expression.Typically a rule would check that the nodes are valid matches, creates a new expression, then calls back RelOptRuleCall.transformTo(org.apache.calcite.rel.RelNode, java.util.Map<org.apache.calcite.rel.RelNode, org.apache.calcite.rel.RelNode>, org.apache.calcite.plan.RelHintsPropagator)to register the expression.- Specified by:
- onMatchin class- RelOptRule
- Parameters:
- call- Rule call
- See Also:
 
 
-