You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by zh...@apache.org on 2022/06/08 11:52:47 UTC
[calcite] branch main updated: [CALCITE-5179] In RelToSqlConverter, AssertionError for values with more than two items when SqlDialect#supportsAliasedValues is false
This is an automated email from the ASF dual-hosted git repository.
zhaohui 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 e84a476d5 [CALCITE-5179] In RelToSqlConverter, AssertionError for values with more than two items when SqlDialect#supportsAliasedValues is false
e84a476d5 is described below
commit e84a476d5dcbccab41e733fb3a61efaae5ab2c35
Author: xiejiajun <ji...@foxmail.com>
AuthorDate: Sat Jun 4 16:01:41 2022 +0800
[CALCITE-5179] In RelToSqlConverter, AssertionError for values with more than two items when SqlDialect#supportsAliasedValues is false
---
.../apache/calcite/rel/rel2sql/RelToSqlConverter.java | 6 ++++--
.../calcite/rel/rel2sql/RelToSqlConverterTest.java | 17 +++++++++++++++++
2 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
index fc0e4c8db..dc0ca1287 100644
--- a/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
+++ b/core/src/main/java/org/apache/calcite/rel/rel2sql/RelToSqlConverter.java
@@ -799,8 +799,10 @@ public class RelToSqlConverter extends SqlImplementor
} else if (list.size() == 1) {
query = list.get(0);
} else {
- query = SqlStdOperatorTable.UNION_ALL.createCall(
- new SqlNodeList(list, POS));
+ query = list.stream()
+ .map(select -> (SqlNode) select)
+ .reduce((l, r) -> SqlStdOperatorTable.UNION_ALL.createCall(POS, l, r))
+ .get();
}
} else {
// Generate ANSI syntax
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 f8eea9140..b077c37cd 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
@@ -5205,6 +5205,23 @@ class RelToSqlConverterTest {
.withSnowflake().ok(expectedSnowflake);
}
+ /**
+ * Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-5179">[CALCITE-5179]
+ * In RelToSqlConverter, AssertionError for values with more than two items
+ * when SqlDialect#supportsAliasedValues is false</a>.
+ */
+ @Test void testThreeValues() {
+ final String sql = "select * from (values (1), (2), (3)) as t(\"a\")\n";
+ sql(sql)
+ .withRedshift().ok("SELECT *\n"
+ + "FROM (SELECT 1 AS \"a\"\n"
+ + "UNION ALL\n"
+ + "SELECT 2 AS \"a\"\n"
+ + "UNION ALL\n"
+ + "SELECT 3 AS \"a\")");
+ }
+
@Test void testValuesEmpty() {
final String sql = "select *\n"
+ "from (values (1, 'a'), (2, 'bb')) as t(x, y)\n"