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");