public class FlinkJoinToMultiJoinRule
extends org.apache.calcite.plan.RelOptRule
LogicalJoin
s
into a single MultiJoin
with N inputs.
An input is not flattened if the input is a null generating input in an outer join, i.e., either input in a full outer join, the right hand side of a left outer join, or the left hand side of a right outer join.
Join conditions are also pulled up from the inputs into the topmost
MultiJoin
,
unless the input corresponds to a null generating input in an outer join,
Outer join information is also stored in the MultiJoin
. A
boolean flag indicates if the join is a full outer join, and in the case of
left and right outer joins, the join type and outer join conditions are
stored in arrays in the MultiJoin
. This outer join information is
associated with the null generating input in the outer join. So, in the case
of a a left outer join between A and B, the information is associated with B,
not A.
Here are examples of the MultiJoin
s constructed after this rule
has been applied on following join trees.
The constructor is parameterized to allow any sub-class of
Join
, not just
LogicalJoin
.
FilterMultiJoinMergeRule
,
ProjectMultiJoinMergeRule
Modifier and Type | Field and Description |
---|---|
static FlinkJoinToMultiJoinRule |
INSTANCE |
Constructor and Description |
---|
FlinkJoinToMultiJoinRule(Class<? extends org.apache.calcite.rel.core.Join> clazz)
Deprecated.
|
FlinkJoinToMultiJoinRule(Class<? extends org.apache.calcite.rel.core.Join> clazz,
org.apache.calcite.tools.RelBuilderFactory relBuilderFactory)
Creates a FlinkJoinToMultiJoinRule.
|
Modifier and Type | Method and Description |
---|---|
boolean |
matches(org.apache.calcite.plan.RelOptRuleCall call) |
void |
onMatch(org.apache.calcite.plan.RelOptRuleCall call) |
any, convert, convert, convertList, convertOperand, convertOperand, equals, equals, getOperand, getOperands, getOutConvention, getOutTrait, hashCode, none, operand, operand, operand, operand, operand, operandJ, operandJ, some, toString, unordered
public static final FlinkJoinToMultiJoinRule INSTANCE
@Deprecated public FlinkJoinToMultiJoinRule(Class<? extends org.apache.calcite.rel.core.Join> clazz)
public FlinkJoinToMultiJoinRule(Class<? extends org.apache.calcite.rel.core.Join> clazz, org.apache.calcite.tools.RelBuilderFactory relBuilderFactory)
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.