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é <[email protected]>
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>. */