/** * Combines the post-join filters from the left and right inputs (if they * are MultiJoinRels) into a single AND'd filter. * * @param joinRel the original LogicalJoin * @param left left child of the LogicalJoin * @param right right child of the LogicalJoin * @return combined post-join filters AND'd together */ private List<RexNode> combinePostJoinFilters( Join joinRel, RelNode left, RelNode right) { final List<RexNode> filters = new ArrayList<>(); if (right instanceof MultiJoin) { final MultiJoin multiRight = (MultiJoin) right; filters.add( shiftRightFilter(joinRel, left, multiRight, multiRight.getPostJoinFilter())); } if (left instanceof MultiJoin) { filters.add(((MultiJoin) left).getPostJoinFilter()); } return filters; }
/** * Combines the post-join filters from the left and right inputs (if they * are MultiJoinRels) into a single AND'd filter. * * @param joinRel the original LogicalJoin * @param left left child of the LogicalJoin * @param right right child of the LogicalJoin * @return combined post-join filters AND'd together */ private List<RexNode> combinePostJoinFilters( Join joinRel, RelNode left, RelNode right) { final List<RexNode> filters = new ArrayList<>(); if (right instanceof MultiJoin) { final MultiJoin multiRight = (MultiJoin) right; filters.add( shiftRightFilter(joinRel, left, multiRight, multiRight.getPostJoinFilter())); } if (left instanceof MultiJoin) { filters.add(((MultiJoin) left).getPostJoinFilter()); } return filters; }
/** * Combines the post-join filters from the left and right inputs (if they * are MultiJoinRels) into a single AND'd filter. * * @param joinRel the original LogicalJoin * @param left left child of the LogicalJoin * @param right right child of the LogicalJoin * @return combined post-join filters AND'd together */ private List<RexNode> combinePostJoinFilters( Join joinRel, RelNode left, RelNode right) { final List<RexNode> filters = Lists.newArrayList(); if (right instanceof MultiJoin) { final MultiJoin multiRight = (MultiJoin) right; filters.add( shiftRightFilter(joinRel, left, multiRight, multiRight.getPostJoinFilter())); } if (left instanceof MultiJoin) { filters.add(((MultiJoin) left).getPostJoinFilter()); } return filters; }
InputFinder.bits(project.getProjects(), multiJoin.getPostJoinFilter()); Lists.transform(newProjFields, ImmutableBitSet::fromBitSet), multiJoin.getJoinFieldRefCountsMap(), multiJoin.getPostJoinFilter());
InputFinder.bits(project.getProjects(), multiJoin.getPostJoinFilter()); Lists.transform(newProjFields, ImmutableBitSet::fromBitSet), multiJoin.getJoinFieldRefCountsMap(), multiJoin.getPostJoinFilter());
multiJoin.getMultiJoinRel().getPostJoinFilter(); if (postJoinFilter != null) { relBuilder.filter(postJoinFilter);
multiJoin.getMultiJoinRel().getPostJoinFilter(); if (postJoinFilter != null) { relBuilder.filter(postJoinFilter);
final RexNode originalJoinFilter = multiJoin.getJoinFilter(); final List<RexNode> originalOuterJoinConditions = multiJoin.getOuterJoinConditions(); final RexNode originalPostJoinFilter = multiJoin.getPostJoinFilter();