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 2023/03/02 05:14:13 UTC
[calcite] branch main updated: [CALCITE-5504] Array value constructor is unparsed incorrectly for `SparkSqlDialect`
This is an automated email from the ASF dual-hosted git repository.
libenchao 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 fb063e8d11 [CALCITE-5504] Array value constructor is unparsed incorrectly for `SparkSqlDialect`
fb063e8d11 is described below
commit fb063e8d1191853c6208e30c601e38fb44d37db5
Author: Guillaume Massé <ma...@gmail.com>
AuthorDate: Tue Jan 31 17:56:44 2023 -0500
[CALCITE-5504] Array value constructor is unparsed incorrectly for `SparkSqlDialect`
Close apache/calcite#3056
---
.../java/org/apache/calcite/sql/dialect/SparkSqlDialect.java | 10 ++++++++++
.../org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 10 ++++++++++
2 files changed, 20 insertions(+)
diff --git a/core/src/main/java/org/apache/calcite/sql/dialect/SparkSqlDialect.java b/core/src/main/java/org/apache/calcite/sql/dialect/SparkSqlDialect.java
index 5bf2ec391f..afb6579a40 100644
--- a/core/src/main/java/org/apache/calcite/sql/dialect/SparkSqlDialect.java
+++ b/core/src/main/java/org/apache/calcite/sql/dialect/SparkSqlDialect.java
@@ -97,6 +97,16 @@ public class SparkSqlDialect extends SqlDialect {
SqlUtil.unparseFunctionSyntax(SPARKSQL_SUBSTRING, writer, call, false);
} else {
switch (call.getKind()) {
+ case ARRAY_VALUE_CONSTRUCTOR:
+ writer.keyword("array");
+ final SqlWriter.Frame frame = writer.startList("(", ")");
+ for (SqlNode operand : call.getOperandList()) {
+ writer.sep(",");
+ operand.unparse(writer, leftPrec, rightPrec);
+ }
+ writer.endList(frame);
+ break;
+
case FLOOR:
if (call.operandCount() != 2) {
super.unparseCall(writer, call, leftPrec, rightPrec);
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 9b8e7226f0..e373c073a6 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
@@ -3674,6 +3674,16 @@ class RelToSqlConverterTest {
sql(retainLimitQuery).ok(retainLimitResult);
}
+ /** Test case for
+ * <a href="https://issues.apache.org/jira/browse/CALCITE-5504">[CALCITE-5504]
+ * Array literals are unparsed incorrectly for the spark dialect</a>.*/
+ @Test void testArrayValueConstructorSpark() {
+ final String query = "SELECT ARRAY[1, 2, 3]";
+ final String expected = "SELECT ARRAY (1, 2, 3)\n"
+ + "FROM (VALUES (0)) t (ZERO)";
+ sql(query).withSpark().ok(expected);
+ }
+
/** Test case for
* <a href="https://issues.apache.org/jira/browse/CALCITE-4674">[CALCITE-4674]
* Excess quotes in generated SQL when STAR is a column alias</a>. */