/** * Returns whether an input can be merged into a given relational expression * without changing semantics. * * @param input input into a join * @param nullGenerating true if the input is null generating * @return true if the input can be combined into a parent MultiJoin */ private boolean canCombine(RelNode input, boolean nullGenerating) { return input instanceof MultiJoin && !((MultiJoin) input).isFullOuterJoin() && !((MultiJoin) input).containsOuter() && !nullGenerating; }
/** * Returns whether an input can be merged into a given relational expression * without changing semantics. * * @param input input into a join * @param nullGenerating true if the input is null generating * @return true if the input can be combined into a parent MultiJoin */ private boolean canCombine(RelNode input, boolean nullGenerating) { return input instanceof MultiJoin && !((MultiJoin) input).isFullOuterJoin() && !((MultiJoin) input).containsOuter() && !nullGenerating; }
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { return;
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { return;
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { return returnList;
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { return returnList;
multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(),
multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(),
newJoinFilter, newRowType, multiJoin.isFullOuterJoin(), newOuterJoinConditions, multiJoin.getJoinTypes(),
public void onMatch(RelOptRuleCall call) { LogicalFilter filter = call.rel(0); MultiJoin multiJoin = call.rel(1); MultiJoin newMultiJoin = new MultiJoin( multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(), multiJoin.getProjFields(), multiJoin.getJoinFieldRefCountsMap(), filter.getCondition()); call.transformTo(newMultiJoin); } }
public void onMatch(RelOptRuleCall call) { LogicalFilter filter = call.rel(0); MultiJoin multiJoin = call.rel(1); MultiJoin newMultiJoin = new MultiJoin( multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(), multiJoin.getOuterJoinConditions(), multiJoin.getJoinTypes(), multiJoin.getProjFields(), multiJoin.getJoinFieldRefCountsMap(), filter.getCondition()); call.transformTo(newMultiJoin); } }
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { assert multiJoin.getNumJoinFactors() == 2; joinType = JoinRelType.FULL;
if (multiJoin.getMultiJoinRel().isFullOuterJoin()) { assert multiJoin.getNumJoinFactors() == 2; joinType = JoinRelType.FULL;