Repository: calcite Updated Branches: refs/heads/master b31da2246 -> a5d4a8b53
[CALCITE-2580] RexSimplify: coalesce(null > null, true) produces wrong result filter expressions (pengzhiwei) fixes #865 Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/a5d4a8b5 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/a5d4a8b5 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/a5d4a8b5 Branch: refs/heads/master Commit: a5d4a8b53cebbf781f0c457bdccc576ec1a9d036 Parents: b31da22 Author: pengzhiwei <[email protected]> Authored: Tue Sep 25 18:55:47 2018 +0800 Committer: Vladimir Sitnikov <[email protected]> Committed: Tue Sep 25 18:19:42 2018 +0300 ---------------------------------------------------------------------- core/src/main/java/org/apache/calcite/rex/RexSimplify.java | 3 ++- core/src/test/java/org/apache/calcite/test/RexProgramTest.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/a5d4a8b5/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 5358f7f..02a1e51 100644 --- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java +++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java @@ -577,8 +577,9 @@ public class RexSimplify { private RexNode simplifyCoalesce(RexCall call) { final Set<String> digests = new HashSet<>(); final List<RexNode> operands = new ArrayList<>(); + final RexSimplify simplify = withUnknownAsFalse(false); for (RexNode operand : call.getOperands()) { - operand = simplify_(operand); + operand = simplify.simplify_(operand); if (digests.add(operand.digest)) { operands.add(operand); } http://git-wip-us.apache.org/repos/asf/calcite/blob/a5d4a8b5/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 4aa6a2c..6c1960a 100644 --- a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java +++ b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java @@ -1210,7 +1210,8 @@ public class RexProgramTest extends RexProgramBuilderBase { checkSimplify(coalesce(iRef, literal1), "COALESCE(?0.i, 1)"); checkSimplify(coalesce(iRef, plus(iRef, hRef), literal1, hRef), "COALESCE(?0.i, +(?0.i, ?0.h), 1)"); - + checkSimplify2(coalesce(gt(nullInt, nullInt), trueLiteral), + "COALESCE(null, true)", "COALESCE(null, true)"); // "(not x) is null" to "x is null" checkSimplify(isNull(not(vBool())), "IS NULL(?0.bool0)"); checkSimplify(isNull(not(vBoolNotNull())), "false");
