public abstract class FlinkFilterJoinRule
extends org.apache.calcite.plan.RelOptRule
| Modifier and Type | Class and Description |
|---|---|
static class |
FlinkFilterJoinRule.FlinkFilterIntoJoinRule
Rule that tries to push filter expressions into a join
condition and into the inputs of the join.
|
static class |
FlinkFilterJoinRule.FlinkJoinConditionPushRule
Rule that pushes parts of the join condition to its inputs.
|
static interface |
FlinkFilterJoinRule.Predicate
Predicate that returns whether a filter is valid in the ON clause of a
join for this particular kind of join.
|
| Modifier and Type | Field and Description |
|---|---|
static FlinkFilterJoinRule |
DUMB_FILTER_ON_JOIN
Dumber version of
FILTER_ON_JOIN. |
static FlinkFilterJoinRule |
FILTER_ON_JOIN
Rule that pushes predicates from a Filter into the Join below them.
|
static FlinkFilterJoinRule |
JOIN
Rule that pushes predicates in a Join into the inputs to the join.
|
static FlinkFilterJoinRule.Predicate |
TRUE_PREDICATE
Predicate that always returns true.
|
| Modifier | Constructor and Description |
|---|---|
protected |
FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand,
String id,
boolean smart,
org.apache.calcite.tools.RelBuilderFactory relBuilderFactory,
FlinkFilterJoinRule.Predicate predicate)
Creates a FilterProjectTransposeRule with an explicit root operand and
factories.
|
protected |
FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand,
String id,
boolean smart,
org.apache.calcite.rel.core.RelFactories.FilterFactory filterFactory,
org.apache.calcite.rel.core.RelFactories.ProjectFactory projectFactory)
Deprecated.
|
protected |
FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand,
String id,
boolean smart,
org.apache.calcite.rel.core.RelFactories.FilterFactory filterFactory,
org.apache.calcite.rel.core.RelFactories.ProjectFactory projectFactory,
FlinkFilterJoinRule.Predicate predicate)
Deprecated.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
perform(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.calcite.rel.core.Filter filter,
org.apache.calcite.rel.core.Join join) |
protected void |
validateJoinFilters(List<org.apache.calcite.rex.RexNode> aboveFilters,
List<org.apache.calcite.rex.RexNode> joinFilters,
org.apache.calcite.rel.core.Join join,
org.apache.calcite.rel.core.JoinRelType joinType)
Validates that target execution framework can satisfy join filters.
|
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, matches, none, onMatch, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unorderedpublic static final FlinkFilterJoinRule.Predicate TRUE_PREDICATE
public static final FlinkFilterJoinRule FILTER_ON_JOIN
public static final FlinkFilterJoinRule DUMB_FILTER_ON_JOIN
FILTER_ON_JOIN. Not intended for production
use, but keeps some tests working for which FILTER_ON_JOIN is too
smart.public static final FlinkFilterJoinRule JOIN
protected FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand,
String id,
boolean smart,
org.apache.calcite.tools.RelBuilderFactory relBuilderFactory,
FlinkFilterJoinRule.Predicate predicate)
@Deprecated protected FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand, String id, boolean smart, org.apache.calcite.rel.core.RelFactories.FilterFactory filterFactory, org.apache.calcite.rel.core.RelFactories.ProjectFactory projectFactory)
@Deprecated protected FlinkFilterJoinRule(org.apache.calcite.plan.RelOptRuleOperand operand, String id, boolean smart, org.apache.calcite.rel.core.RelFactories.FilterFactory filterFactory, org.apache.calcite.rel.core.RelFactories.ProjectFactory projectFactory, FlinkFilterJoinRule.Predicate predicate)
protected void perform(org.apache.calcite.plan.RelOptRuleCall call,
org.apache.calcite.rel.core.Filter filter,
org.apache.calcite.rel.core.Join join)
protected void validateJoinFilters(List<org.apache.calcite.rex.RexNode> aboveFilters, List<org.apache.calcite.rex.RexNode> joinFilters, org.apache.calcite.rel.core.Join join, org.apache.calcite.rel.core.JoinRelType joinType)
If the join filter cannot be satisfied (for example, if it is
l.c1 > r.c2 and the join only supports equi-join), removes the
filter from joinFilters and adds it to aboveFilters.
The default implementation does nothing; i.e. the join can handle all conditions.
aboveFilters - Filter above JoinjoinFilters - Filters in join conditionjoin - JoinjoinType - JoinRelType could be different from type in Join due to
outer join simplification.Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.