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 298a94a09a [CALCITE-5577] Map value constructor is unparsed
incorrectly for `SparkSqlDialect`
298a94a09a is described below
commit 298a94a09a7d15bbda429b19cb9d5a7e27f951ea
Author: Guillaume Massé <[email protected]>
AuthorDate: Mon Mar 13 13:18:46 2023 -0400
[CALCITE-5577] Map value constructor is unparsed incorrectly for
`SparkSqlDialect`
Close apache/calcite#3108
---
.../java/org/apache/calcite/sql/dialect/SparkSqlDialect.java | 8 +++++++-
.../org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java | 10 ++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)
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 afb6579a40..3a7b628ce1 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
@@ -24,6 +24,7 @@ import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlDialect;
import org.apache.calcite.sql.SqlFunction;
import org.apache.calcite.sql.SqlFunctionCategory;
+import org.apache.calcite.sql.SqlKind;
import org.apache.calcite.sql.SqlLiteral;
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlUtil;
@@ -98,7 +99,12 @@ public class SparkSqlDialect extends SqlDialect {
} else {
switch (call.getKind()) {
case ARRAY_VALUE_CONSTRUCTOR:
- writer.keyword("array");
+ case MAP_VALUE_CONSTRUCTOR:
+ final String keyword =
+ call.getKind() == SqlKind.ARRAY_VALUE_CONSTRUCTOR ? "array" :
"map";
+
+ writer.keyword(keyword);
+
final SqlWriter.Frame frame = writer.startList("(", ")");
for (SqlNode operand : call.getOperandList()) {
writer.sep(",");
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 e373c073a6..cb41c225d2 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
@@ -3684,6 +3684,16 @@ class RelToSqlConverterTest {
sql(query).withSpark().ok(expected);
}
+ /** Test case for
+ * <a
href="https://issues.apache.org/jira/browse/CALCITE-5577">[CALCITE-5577]
+ * Map value constructor is unparsed incorrectly for SparkSqlDialect</a>.*/
+ @Test void testMapValueConstructorSpark() {
+ final String query = "SELECT MAP['k1', 'v1', 'k2', 'v2']";
+ final String expected = "SELECT MAP ('k1', 'v1', 'k2', 'v2')\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>. */