public class FlinkJoinToMultiJoinRule extends org.apache.calcite.plan.RelOptRule
LogicalJoins into a single
MultiJoinwith 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
unless the input corresponds to a null generating input in an outer join,
Outer join information is also stored in the
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,
Here are examples of the
MultiJoins constructed after this rule
has been applied on following join trees.
The constructor is parameterized to allow any sub-class of
Join, not just
|Modifier and Type||Field and Description|
|Constructor and Description|
Creates a FlinkJoinToMultiJoinRule.
|Modifier and Type||Method and Description|
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.