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 94dc1673da [CALCITE-6088] SqlItemOperator fails in RelToSqlConverter
94dc1673da is described below

commit 94dc1673da824174f9271677ead73cfae1aeb29b
Author: xiejiajun <[email protected]>
AuthorDate: Sat Nov 4 17:05:54 2023 +0800

    [CALCITE-6088] SqlItemOperator fails in RelToSqlConverter
---
 .../org/apache/calcite/rel/rel2sql/SqlImplementor.java   |  1 +
 .../calcite/rel/rel2sql/RelToSqlConverterTest.java       | 16 ++++++++++++++++
 2 files changed, 17 insertions(+)

diff --git 
a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java 
b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
index c71dc6558d..9d39dbf9cb 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/SqlImplementor.java
@@ -668,6 +668,7 @@ public abstract class SqlImplementor {
               .field(lastAccess.getField().getIndex());
           break;
         case ROW:
+        case ITEM:
           final SqlNode expr = toSql(program, referencedExpr);
           sqlIdentifier = new SqlIdentifier(expr.toString(), POS);
           break;
diff --git 
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java 
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
index ddfe9af0c6..b73cc8016c 100644
--- 
a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
+++ 
b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
@@ -2107,6 +2107,22 @@ class RelToSqlConverterTest {
         .withHive().ok(expected);
   }
 
+  /** Test case for
+   * <a 
href="https://issues.apache.org/jira/browse/CALCITE-6088";>[CALCITE-6088]
+   * SqlItemOperator fails in RelToSqlConverter</a>. */
+  @Test void testSqlItemOperator() {
+    sql("SELECT foo[0].\"EXPR$1\" FROM (SELECT ARRAY[ROW('a', 'b')] AS foo)")
+        .ok("SELECT \"ARRAY[ROW('a', 'b')][0]\".\"EXPR$1\"\n"
+            + "FROM (VALUES (0)) AS \"t\" (\"ZERO\")");
+    sql("SELECT foo['k'].\"EXPR$1\" FROM (SELECT MAP['k', ROW('a', 'b')] AS 
foo)")
+        .ok("SELECT \"MAP['k', ROW('a', 'b')]['k']\".\"EXPR$1\"\n"
+            + "FROM (VALUES (0)) AS \"t\" (\"ZERO\")");
+    sql("select\"books\"[0].\"title\" from \"authors\"")
+        .schema(CalciteAssert.SchemaSpec.BOOKSTORE)
+        .ok("SELECT \"`books`[0]\".\"title\"\n"
+            + "FROM \"bookstore\".\"authors\"");
+  }
+
   /** Test case for
    * <a 
href="https://issues.apache.org/jira/browse/CALCITE-3282";>[CALCITE-3282]
    * HiveSqlDialect unparse Interger type as Int in order

Reply via email to