This is an automated email from the ASF dual-hosted git repository.
asolimando pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/main by this push:
new f47ca1cb94 [CALCITE-6295] Support IS NOT NULL in Arrow adapter
f47ca1cb94 is described below
commit f47ca1cb9467c6c878a88f0cda6bf95fad2d5e99
Author: Tim Grein <[email protected]>
AuthorDate: Fri Jul 19 18:40:52 2024 +0200
[CALCITE-6295] Support IS NOT NULL in Arrow adapter
---
.../calcite/adapter/arrow/ArrowTranslator.java | 2 +
.../calcite/adapter/arrow/ArrowAdapterTest.java | 47 ++++++++++++----------
.../src/main/java/org/apache/calcite/util/Bug.java | 5 ---
3 files changed, 28 insertions(+), 26 deletions(-)
diff --git
a/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowTranslator.java
b/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowTranslator.java
index 504a65a8d7..0015471d14 100644
--- a/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowTranslator.java
+++ b/arrow/src/main/java/org/apache/calcite/adapter/arrow/ArrowTranslator.java
@@ -129,6 +129,8 @@ class ArrowTranslator {
return translateBinary("greater_than_or_equal_to", "<=", (RexCall) node);
case IS_NULL:
return translateUnary("isnull", (RexCall) node);
+ case IS_NOT_NULL:
+ return translateUnary("isnotnull", (RexCall) node);
default:
throw new UnsupportedOperationException("Unsupported operator " + node);
}
diff --git
a/arrow/src/test/java/org/apache/calcite/adapter/arrow/ArrowAdapterTest.java
b/arrow/src/test/java/org/apache/calcite/adapter/arrow/ArrowAdapterTest.java
index 091ee5b015..3158d0011a 100644
--- a/arrow/src/test/java/org/apache/calcite/adapter/arrow/ArrowAdapterTest.java
+++ b/arrow/src/test/java/org/apache/calcite/adapter/arrow/ArrowAdapterTest.java
@@ -294,34 +294,39 @@ class ArrowAdapterTest {
.explainContains(plan);
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-6295">[CALCITE-6295]
+ * Support IS NOT NULL in Arrow adapter</a>. */
@Test void testArrowProjectFieldsWithIsNotNullFilter() {
String sql = "select \"intField\", \"stringField\"\n"
+ "from arrowdata\n"
- + "where \"intField\" is not null\n"
- + "order by \"intField\"\n"
- + "limit 1";
- String plan;
- if (Bug.CALCITE_6295_FIXED) {
- plan = "PLAN=EnumerableLimit(fetch=[1])\n"
- + " EnumerableSort(sort0=[$0], dir0=[ASC])\n"
- + " ArrowToEnumerableConverter\n"
- + " ArrowProject(intField=[$0], stringField=[$1])\n"
- + " ArrowFilter(condition=[IS NOT NULL($0)])\n"
- + " ArrowTableScan(table=[[ARROW, ARROWDATA]], fields=[[0,
1, 2, 3]])\n\n";
- } else {
- plan = "PLAN=EnumerableCalc(expr#0..3=[{inputs}], proj#0..1=[{exprs}])\n"
- + " EnumerableLimit(fetch=[1])\n"
- + " EnumerableSort(sort0=[$0], dir0=[ASC])\n"
- + " EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT
NULL($t0)], proj#0..3=[{exprs}], $condition=[$t4])\n"
- + " ArrowToEnumerableConverter\n"
- + " ArrowTableScan(table=[[ARROW, ARROWDATA]], fields=[[0,
1, 2, 3]])\n\n";
- }
- String result = "intField=0; stringField=0\n";
+ + "where \"intField\" is not null\n";
+ String plan = "PLAN=ArrowToEnumerableConverter\n"
+ + " ArrowProject(intField=[$0], stringField=[$1])\n"
+ + " ArrowFilter(condition=[IS NOT NULL($0)])\n"
+ + " ArrowTableScan(table=[[ARROW, ARROWDATA]], fields=[[0, 1,
2, 3]])\n\n";
CalciteAssert.that()
.with(arrow)
.query(sql)
- .returns(result)
+ .returnsCount(50)
+ .explainContains(plan);
+ }
+
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-6295">[CALCITE-6295]
+ * Support IS NOT NULL in Arrow adapter</a>. */
+ @Test void testConjunctiveIsNotNullFilters() {
+ String sql = "select * from arrowdata\n"
+ + "where \"intField\" is not null and \"stringField\" is not null";
+ String plan = "PLAN=ArrowToEnumerableConverter\n"
+ + " ArrowFilter(condition=[AND(IS NOT NULL($0), IS NOT NULL($1))])\n"
+ + " ArrowTableScan(table=[[ARROW, ARROWDATA]], fields=[[0, 1, 2,
3]])\n\n";
+
+ CalciteAssert.that()
+ .with(arrow)
+ .query(sql)
+ .returnsCount(50)
.explainContains(plan);
}
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 e5b79bab1a..3c39697816 100644
--- a/core/src/main/java/org/apache/calcite/util/Bug.java
+++ b/core/src/main/java/org/apache/calcite/util/Bug.java
@@ -231,11 +231,6 @@ public abstract class Bug {
* [CALCITE-6294] Support IN filter in Arrow adapter</a> is fixed. */
public static final boolean CALCITE_6294_FIXED = false;
- /** Whether
- * <a
href="https://issues.apache.org/jira/browse/CALCITE/issues/CALCITE-6295">
- * [CALCITE-6295] Support IS NOT NULL in Arrow adapter</a> is fixed. */
- public static final boolean CALCITE_6295_FIXED = false;
-
/**
* Use this to flag temporary code.
*/