public static JoinPredicateInfo constructJoinPredicateInfo(MultiJoin mj) { return constructJoinPredicateInfo(mj, mj.getJoinFilter()); }
filters.add(((MultiJoin) left).getJoinFilter()); filters.add( shiftRightFilter(joinRel, left, multiJoin, multiJoin.getJoinFilter()));
filters.add(((MultiJoin) left).getJoinFilter()); filters.add( shiftRightFilter(joinRel, left, multiJoin, multiJoin.getJoinFilter()));
Lists.newArrayList(RelOptUtil.conjunctions(multiJoin.getJoinFilter()));
Lists.newArrayList(RelOptUtil.conjunctions(multiJoin.getJoinFilter()));
multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(),
multiJoin.getCluster(), multiJoin.getInputs(), multiJoin.getJoinFilter(), multiJoin.getRowType(), multiJoin.isFullOuterJoin(),
public Double getRowCount(MultiJoin rel, RelMetadataQuery mq) { if (rel.getJoinFilter().isAlwaysTrue() && RexUtil.composeConjunction(rel.getCluster().getRexBuilder(), rel.getOuterJoinConditions(), false).isAlwaysTrue()) { double rowCount = 1; for (RelNode input : rel.getInputs()) { rowCount *= mq.getRowCount(input); } return rowCount; } else { double max = 1; for (RelNode input : rel.getInputs()) { max = Math.max(max, mq.getRowCount(input)); } return max; } }
leftCondition = ((Join) left).getCondition(); } else { leftCondition = ((MultiJoin) left).getJoinFilter(); } else { rightCondition = shiftRightFilter(join, left, right, ((MultiJoin) right).getJoinFilter());
final RexNode originalJoinFilter = multiJoin.getJoinFilter(); final List<RexNode> originalOuterJoinConditions = multiJoin.getOuterJoinConditions(); final RexNode originalPostJoinFilter = multiJoin.getPostJoinFilter();
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); } }