/** * 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; }
MultiJoin multiJoin = (MultiJoin) right; filters.add( shiftRightFilter(joinRel, left, multiJoin, multiJoin.getJoinFilter()));
MultiJoin multiJoin = (MultiJoin) right; filters.add( shiftRightFilter(joinRel, left, multiJoin, multiJoin.getJoinFilter()));