/** As {@link #simplifyAnd2(List, List)} but we assume that if the expression * returns UNKNOWN it will be interpreted as FALSE. */ RexNode simplifyAnd2ForUnknownAsFalse(List<RexNode> terms, List<RexNode> notTerms) { //noinspection unchecked return simplifyAnd2ForUnknownAsFalse(terms, notTerms, Comparable.class); }
/** As {@link #simplifyAnd2(List, List)} but we assume that if the expression * returns UNKNOWN it will be interpreted as FALSE. */ RexNode simplifyAnd2ForUnknownAsFalse(List<RexNode> terms, List<RexNode> notTerms) { //noinspection unchecked return simplifyAnd2ForUnknownAsFalse(terms, notTerms, Comparable.class); }
@Deprecated // to be removed before 2.0 public static RexNode simplifyAnd2ForUnknownAsFalse(RexBuilder rexBuilder, List<RexNode> terms, List<RexNode> notTerms) { return new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, EXECUTOR) .simplifyAnd2ForUnknownAsFalse(terms, notTerms); }
@Deprecated // to be removed before 2.0 public static RexNode simplifyAnd2ForUnknownAsFalse(RexBuilder rexBuilder, List<RexNode> terms, List<RexNode> notTerms) { return new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, EXECUTOR) .simplifyAnd2ForUnknownAsFalse(terms, notTerms); }
RexNode simplifyAnds(Iterable<? extends RexNode> nodes, RexUnknownAs unknownAs) { final List<RexNode> terms = new ArrayList<>(); final List<RexNode> notTerms = new ArrayList<>(); for (RexNode e : nodes) { RelOptUtil.decomposeConjunction(e, terms, notTerms); } simplifyList(terms, UNKNOWN); simplifyList(notTerms, UNKNOWN); if (unknownAs == FALSE) { return simplifyAnd2ForUnknownAsFalse(terms, notTerms); } return simplifyAnd2(terms, notTerms); }
RexNode simplifyAnds(Iterable<? extends RexNode> nodes, RexUnknownAs unknownAs) { final List<RexNode> terms = new ArrayList<>(); final List<RexNode> notTerms = new ArrayList<>(); for (RexNode e : nodes) { RelOptUtil.decomposeConjunction(e, terms, notTerms); } simplifyList(terms, UNKNOWN); simplifyList(notTerms, UNKNOWN); if (unknownAs == FALSE) { return simplifyAnd2ForUnknownAsFalse(terms, notTerms); } return simplifyAnd2(terms, notTerms); }
RexNode simplifyAnd(RexCall e, RexUnknownAs unknownAs) { final List<RexNode> terms = new ArrayList<>(); final List<RexNode> notTerms = new ArrayList<>(); RelOptUtil.decomposeConjunction(e, terms, notTerms); if (unknownAs == FALSE && predicateElimination) { simplifyAndTerms(terms); } else { simplifyList(terms, unknownAs); } simplifyList(notTerms, UNKNOWN); // TODO could be unknownAs.negate()? switch (unknownAs) { case FALSE: return simplifyAnd2ForUnknownAsFalse(terms, notTerms, Comparable.class); } return simplifyAnd2(terms, notTerms); }
RexNode simplifyAnd(RexCall e, RexUnknownAs unknownAs) { final List<RexNode> terms = new ArrayList<>(); final List<RexNode> notTerms = new ArrayList<>(); RelOptUtil.decomposeConjunction(e, terms, notTerms); if (unknownAs == FALSE && predicateElimination) { simplifyAndTerms(terms); } else { simplifyList(terms, unknownAs); } simplifyList(notTerms, UNKNOWN); // TODO could be unknownAs.negate()? switch (unknownAs) { case FALSE: return simplifyAnd2ForUnknownAsFalse(terms, notTerms, Comparable.class); } return simplifyAnd2(terms, notTerms); }