This is an automated email from the ASF dual-hosted git repository. liyafan pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/calcite.git
commit 4bc5cf171e5ba8dd7cf69a1113e0feee2cb0c13b Author: ILuffZhe <[email protected]> AuthorDate: Mon Jan 17 22:58:41 2022 +0800 [CALCITE-4965] IS NOT NULL failed in Elasticsearch Adapter --- core/src/main/java/org/apache/calcite/util/Bug.java | 5 ----- .../apache/calcite/adapter/elasticsearch/PredicateAnalyzer.java | 3 +++ .../org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java | 7 ++----- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/util/Bug.java b/core/src/main/java/org/apache/calcite/util/Bug.java index b759341..602984c 100644 --- a/core/src/main/java/org/apache/calcite/util/Bug.java +++ b/core/src/main/java/org/apache/calcite/util/Bug.java @@ -205,11 +205,6 @@ public abstract class Bug { * In Elasticsearch adapter, a range predicate should be translated to a range query</a> is * fixed. */ public static final boolean CALCITE_4645_FIXED = false; - /** Whether - * <a href="https://issues.apache.org/jira/browse/CALCITE-4965">[CALCITE-4965] - * IS NOT NULL failed in Elasticsearch Adapter</a> is - * fixed. */ - public static final boolean CALCITE_4965_FIXED = false; /** * Use this to flag temporary code. diff --git a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/PredicateAnalyzer.java b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/PredicateAnalyzer.java index b8e5c45..0f48de9 100644 --- a/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/PredicateAnalyzer.java +++ b/elasticsearch/src/main/java/org/apache/calcite/adapter/elasticsearch/PredicateAnalyzer.java @@ -604,6 +604,9 @@ class PredicateAnalyzer { public abstract QueryExpression isTrue(); public static QueryExpression create(TerminalExpression expression) { + if (expression instanceof CastExpression) { + expression = CastExpression.unpack(expression); + } if (expression instanceof NamedFieldExpression) { return new SimpleQueryExpression((NamedFieldExpression) expression); diff --git a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java index 26a009c..2245dba 100644 --- a/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java +++ b/elasticsearch/src/test/java/org/apache/calcite/adapter/elasticsearch/BooleanLogicTest.java @@ -21,7 +21,6 @@ import org.apache.calcite.schema.SchemaPlus; import org.apache.calcite.schema.impl.ViewTable; import org.apache.calcite.schema.impl.ViewTableMacro; import org.apache.calcite.test.CalciteAssert; -import org.apache.calcite.util.Bug; import com.fasterxml.jackson.databind.node.ObjectNode; import com.google.common.collect.ImmutableMap; @@ -119,10 +118,8 @@ class BooleanLogicTest { assertEmpty("select * from view where num > 42 and num < 42 and num = 42"); assertEmpty("select * from view where num > 42 or num < 42 and num = 42"); assertSingle("select * from view where num > 42 and num < 42 or num = 42"); - if (Bug.CALCITE_4965_FIXED) { - assertSingle("select * from view where num > 42 or num < 42 or num = 42"); - assertEmpty("select * from view where num is null"); - } + assertSingle("select * from view where num > 42 or num < 42 or num = 42"); + assertEmpty("select * from view where num is null"); assertSingle("select * from view where num >= 42 and num <= 42 and num = 42"); assertEmpty("select * from view where num >= 42 and num <= 42 and num <> 42"); assertEmpty("select * from view where num < 42");
