/** * Validates that target execution framework can satisfy join filters. * * <p>If the join filter cannot be satisfied (for example, if it is * {@code l.c1 > r.c2} and the join only supports equi-join), removes the * filter from {@code joinFilters} and adds it to {@code aboveFilters}. * * <p>The default implementation does nothing; i.e. the join can handle all * conditions. * * @param aboveFilters Filter above Join * @param joinFilters Filters in join condition * @param join Join * @param joinType JoinRelType could be different from type in Join due to * outer join simplification. */ protected void validateJoinFilters(List<RexNode> aboveFilters, List<RexNode> joinFilters, Join join, JoinRelType joinType) { final Iterator<RexNode> filterIter = joinFilters.iterator(); while (filterIter.hasNext()) { RexNode exp = filterIter.next(); if (!predicate.apply(join, joinType, exp)) { aboveFilters.add(exp); filterIter.remove(); } } }
/** * Validates that target execution framework can satisfy join filters. * * <p>If the join filter cannot be satisfied (for example, if it is * {@code l.c1 > r.c2} and the join only supports equi-join), removes the * filter from {@code joinFilters} and adds it to {@code aboveFilters}. * * <p>The default implementation does nothing; i.e. the join can handle all * conditions. * * @param aboveFilters Filter above Join * @param joinFilters Filters in join condition * @param join Join * @param joinType JoinRelType could be different from type in Join due to * outer join simplification. */ protected void validateJoinFilters(List<RexNode> aboveFilters, List<RexNode> joinFilters, Join join, JoinRelType joinType) { final Iterator<RexNode> filterIter = joinFilters.iterator(); while (filterIter.hasNext()) { RexNode exp = filterIter.next(); if (!predicate.apply(join, joinType, exp)) { aboveFilters.add(exp); filterIter.remove(); } } }
/** * Validates that target execution framework can satisfy join filters. * * <p>If the join filter cannot be satisfied (for example, if it is * {@code l.c1 > r.c2} and the join only supports equi-join), removes the * filter from {@code joinFilters} and adds it to {@code aboveFilters}. * * <p>The default implementation does nothing; i.e. the join can handle all * conditions. * * @param aboveFilters Filter above Join * @param joinFilters Filters in join condition * @param join Join * @param joinType JoinRelType could be different from type in Join due to * outer join simplification. */ protected void validateJoinFilters(List<RexNode> aboveFilters, List<RexNode> joinFilters, Join join, JoinRelType joinType) { final Iterator<RexNode> filterIter = joinFilters.iterator(); while (filterIter.hasNext()) { RexNode exp = filterIter.next(); if (!predicate.apply(join, joinType, exp)) { aboveFilters.add(exp); filterIter.remove(); } } }