We're supposed to be stabilizing for release 1.14. No more commits to master please.
Julian On Tue, Sep 12, 2017 at 10:16 AM, <[email protected]> wrote: > Repository: calcite > Updated Branches: > refs/heads/master 67071b6b0 -> d633402c4 > > > [CALCITE-1982] NPE simplifying range expressions when literal value is null > > > Project: http://git-wip-us.apache.org/repos/asf/calcite/repo > Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/d633402c > Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/d633402c > Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/d633402c > > Branch: refs/heads/master > Commit: d633402c41158da3fc00eebcf0e75b0c7da71450 > Parents: 67071b6 > Author: Jesus Camacho Rodriguez <[email protected]> > Authored: Tue Sep 12 10:13:17 2017 -0700 > Committer: Jesus Camacho Rodriguez <[email protected]> > Committed: Tue Sep 12 10:13:17 2017 -0700 > > ---------------------------------------------------------------------- > .../main/java/org/apache/calcite/rex/RexSimplify.java | 11 ++++++++--- > .../java/org/apache/calcite/test/RexProgramTest.java | 3 +++ > 2 files changed, 11 insertions(+), 3 deletions(-) > ---------------------------------------------------------------------- > > > http://git-wip-us.apache.org/repos/asf/calcite/blob/d633402c/core/src/main/java/org/apache/calcite/rex/RexSimplify.java > ---------------------------------------------------------------------- > diff --git a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java > b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java > index 52c4795..286a697 100644 > --- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java > +++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java > @@ -613,13 +613,18 @@ public class RexSimplify { > RexCall rightCast = (RexCall) right; > comparedOperands.add(rightCast.getOperands().get(0).toString()); > } > - // Check for equality on different constants. If the same ref or > CAST(ref) > - // is equal to different constants, this condition cannot be > satisfied, > - // and hence it can be evaluated to FALSE > final boolean leftRef = RexUtil.isReferenceOrAccess(left, true); > final boolean rightRef = RexUtil.isReferenceOrAccess(right, true); > final boolean leftConstant = left.isA(SqlKind.LITERAL); > final boolean rightConstant = right.isA(SqlKind.LITERAL); > + // Check for comparison with null values > + if (leftConstant && ((RexLiteral) left).getValue() == null > + || rightConstant && ((RexLiteral) right).getValue() == null) { > + return rexBuilder.makeLiteral(false); > + } > + // Check for equality on different constants. If the same ref or > CAST(ref) > + // is equal to different constants, this condition cannot be > satisfied, > + // and hence it can be evaluated to FALSE > if (term.getKind() == SqlKind.EQUALS) { > if (leftRef && rightConstant) { > final String literal = right.toString(); > > http://git-wip-us.apache.org/repos/asf/calcite/blob/d633402c/core/src/test/java/org/apache/calcite/test/RexProgramTest.java > ---------------------------------------------------------------------- > diff --git a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java > b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java > index f82a265..b0467d6 100644 > --- a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java > +++ b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java > @@ -1311,6 +1311,9 @@ public class RexProgramTest { > checkSimplifyFilter( > case_(aRef, trueLiteral, bRef, trueLiteral, cRef, falseLiteral, > dRef, falseLiteral, > unknownLiteral), "CAST(OR(?0.a, ?0.b)):BOOLEAN"); > + > + // condition with null value for range > + checkSimplifyFilter(and(gt(aRef, unknownLiteral), ge(bRef, literal1)), > "false"); > } > > /** Unit test for >
