This is an automated email from the ASF dual-hosted git repository.

mbudiu 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 f8eb832e2c [CALCITE-6376] Selecting 6 columns with QUALIFY operation 
results in exception
f8eb832e2c is described below

commit f8eb832e2cbcbb7964d19e3e35035e1af1d4b365
Author: Mihai Budiu <mbu...@feldera.com>
AuthorDate: Tue Apr 30 13:28:18 2024 -0700

    [CALCITE-6376] Selecting 6 columns with QUALIFY operation results in 
exception
    
    Signed-off-by: Mihai Budiu <mbu...@feldera.com>
---
 .../main/java/org/apache/calcite/runtime/FlatLists.java   |  5 +++++
 .../org/apache/calcite/test/SqlToRelConverterTest.java    |  8 ++++++++
 .../org/apache/calcite/test/SqlToRelConverterTest.xml     | 15 +++++++++++++++
 3 files changed, 28 insertions(+)

diff --git a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java 
b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
index de7471eda6..544a8926f0 100644
--- a/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
+++ b/core/src/main/java/org/apache/calcite/runtime/FlatLists.java
@@ -21,6 +21,7 @@ import org.apache.calcite.util.ImmutableNullableList;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
+import org.checkerframework.checker.nullness.qual.NonNull;
 import org.checkerframework.checker.nullness.qual.Nullable;
 import org.checkerframework.checker.nullness.qual.PolyNull;
 
@@ -1323,6 +1324,10 @@ public class FlatLists {
       return list.size();
     }
 
+    @Override @NonNull public Object[] toArray(@NonNull ComparableListImpl<T> 
this) {
+      return this.list.toArray();
+    }
+
     @Override public int compareTo(List o) {
       return compare(list, o);
     }
diff --git 
a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java 
b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
index e62eeb78b5..4e55821999 100644
--- a/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/test/SqlToRelConverterTest.java
@@ -3490,6 +3490,14 @@ class SqlToRelConverterTest extends SqlToRelTestBase {
     sql(sql).ok();
   }
 
+  /** Test case for <a 
href="https://issues.apache.org/jira/browse/CALCITE-6376";>[CALCITE-6376]
+   * Selecting 6 columns with QUALIFY operation results in exception</a>. */
+  @Test void testQualifyWindow() {
+    sql("SELECT empno, ename, deptno, job, mgr, hiredate\n"
+        + "FROM emp\n"
+        + "QUALIFY ROW_NUMBER() over (partition by ename order by deptno) = 1")
+        .ok();
+  }
 
   @Test void testQualifyWithoutReferences() {
     sql("SELECT empno, ename, deptno\n"
diff --git 
a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml 
b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
index 1bf1556aa7..2a029cfd09 100644
--- a/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/SqlToRelConverterTest.xml
@@ -6136,6 +6136,21 @@ LogicalProject(EMPNO=[$0], ENAME=[$1], DEPTNO=[$2])
       LogicalFilter(condition=[$3])
         LogicalProject(EMPNO=[$0], ENAME=[$1], DEPTNO=[$7], 
QualifyExpression=[=(RANK() OVER (PARTITION BY $1 ORDER BY $7 DESC), 1)])
           LogicalTableScan(table=[[CATALOG, SALES, EMP]])
+]]>
+    </Resource>
+  </TestCase>
+  <TestCase name="testQualifyWindow">
+    <Resource name="sql">
+      <![CDATA[SELECT empno, ename, deptno, job, mgr, hiredate
+FROM emp
+QUALIFY ROW_NUMBER() over (partition by ename order by deptno) = 1]]>
+    </Resource>
+    <Resource name="plan">
+      <![CDATA[
+LogicalProject(EMPNO=[$0], ENAME=[$1], DEPTNO=[$2], JOB=[$3], MGR=[$4], 
HIREDATE=[$5])
+  LogicalFilter(condition=[$6])
+    LogicalProject(EMPNO=[$0], ENAME=[$1], DEPTNO=[$7], JOB=[$2], MGR=[$3], 
HIREDATE=[$4], QualifyExpression=[=(ROW_NUMBER() OVER (PARTITION BY $1 ORDER BY 
$7), 1)])
+      LogicalTableScan(table=[[CATALOG, SALES, EMP]])
 ]]>
     </Resource>
   </TestCase>

Reply via email to