public static class JdbcRules.JdbcJoinRule extends ConverterRule
ConverterRule.ConfigRelRule.Done, RelRule.MatchHandler<R extends RelOptRule>, RelRule.OperandBuilder, RelRule.OperandDetailBuilder<R extends RelNode>, RelRule.OperandTransformRelOptRule.ConverterRelOptRuleOperandoutdescription, operands, relBuilderFactory| Modifier | Constructor and Description |
|---|---|
protected |
JdbcJoinRule(ConverterRule.Config config)
Called from the Config.
|
| Modifier and Type | Method and Description |
|---|---|
@Nullable RelNode |
convert(Join join,
boolean convertInputTraits)
Converts a
Join into a JdbcJoin. |
@Nullable RelNode |
convert(RelNode rel)
Converts a relational expression to the target trait(s) of this rule.
|
static JdbcRules.JdbcJoinRule |
create(JdbcConvention out)
Creates a JdbcJoinRule.
|
boolean |
matches(RelOptRuleCall call)
Returns whether this rule could possibly match the given operands.
|
getInTrait, getOutConvention, getOutTrait, getTraitDef, isGuaranteed, onMatchany, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, hashCode, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unorderedprotected JdbcJoinRule(ConverterRule.Config config)
public static JdbcRules.JdbcJoinRule create(JdbcConvention out)
public @Nullable RelNode convert(RelNode rel)
ConverterRuleReturns null if conversion is not possible.
convert in class ConverterRulepublic @Nullable RelNode convert(Join join, boolean convertInputTraits)
Join into a JdbcJoin.join - Join operator to convertconvertInputTraits - Whether to convert input to join's
JDBC conventionpublic boolean matches(RelOptRuleCall call)
RelOptRuleThis method is an opportunity to apply side-conditions to a rule. The
RelOptPlanner calls this method after matching all operands of
the rule, and before calling RelOptRule.onMatch(RelOptRuleCall).
In implementations of RelOptPlanner which may queue up a
matched RelOptRuleCall for a long time before calling
RelOptRule.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 have
RelOptRule.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
matches in class RelOptRulecall - Rule call which has been determined to match all operands of
this ruleCopyright © 2012-2022 Apache Software Foundation. All Rights Reserved.