You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by li...@apache.org on 2022/03/04 13:24:17 UTC

[calcite] 13/41: [CALCITE-4965] IS NOT NULL failed in Elasticsearch Adapter

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 <il...@163.com>
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");