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 0b2b75cb08 [CALCITE-5326] SqlMerge#unparse generate extra parentheses
for values in insert statement
0b2b75cb08 is described below
commit 0b2b75cb0863712bf4c10cd52891712117987325
Author: Christophe Le Saec <[email protected]>
AuthorDate: Wed Oct 12 11:09:05 2022 +0200
[CALCITE-5326] SqlMerge#unparse generate extra parentheses for values in
insert statement
This closes #2936
---
core/src/main/java/org/apache/calcite/sql/SqlMerge.java | 2 +-
.../java/org/apache/calcite/sql/parser/SqlParserTest.java | 14 +++++++-------
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/sql/SqlMerge.java
b/core/src/main/java/org/apache/calcite/sql/SqlMerge.java
index 7f77650c6b..ba70a9e52e 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlMerge.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlMerge.java
@@ -211,7 +211,7 @@ public class SqlMerge extends SqlCall {
if (targetColumnList != null) {
targetColumnList.unparse(writer, opLeft, opRight);
}
- insertCall.getSource().unparse(writer, opLeft, opRight);
+ insertCall.getSource().unparse(writer, 0, 0);
writer.endList(frame);
}
diff --git
a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
index 4a9a01803d..9272197acd 100644
--- a/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
+++ b/testkit/src/main/java/org/apache/calcite/sql/parser/SqlParserTest.java
@@ -824,7 +824,7 @@ public class SqlParserTest {
+ " salary = (t.salary * 0.1)\n"
+ "WHEN NOT MATCHED THEN"
+ " INSERT (name, dept, salary)"
- + " (VALUES (t.name, 10, (t.salary * 0.15)))";
+ + " VALUES (t.name, 10, (t.salary * 0.15))";
sql(mergeSql)
.fails("(?s)Encountered \"-\" at .*")
.withDialect(BIG_QUERY)
@@ -4606,7 +4606,7 @@ public class SqlParserTest {
+ ", `DEPTNO` = `T`.`DEPTNO`"
+ ", `SALARY` = (`T`.`SALARY` * 0.1)\n"
+ "WHEN NOT MATCHED THEN INSERT (`NAME`, `DEPT`, `SALARY`) "
- + "(VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15))))";
+ + "VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15)))";
sql(sql).ok(expected)
.node(not(isDdl()));
}
@@ -4629,7 +4629,7 @@ public class SqlParserTest {
+ ", `E`.`DEPTNO` = `T`.`DEPTNO`"
+ ", `E`.`SALARY` = (`T`.`SALARY` * 0.1)\n"
+ "WHEN NOT MATCHED THEN INSERT (`NAME`, `DEPT`, `SALARY`) "
- + "(VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15))))";
+ + "VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15)))";
sql(sql).ok(expected)
.node(not(isDdl()));
}
@@ -4649,7 +4649,7 @@ public class SqlParserTest {
+ ", `DEPTNO` = `T`.`DEPTNO`"
+ ", `SALARY` = (`T`.`SALARY` * 0.1)\n"
+ "WHEN NOT MATCHED THEN INSERT (`NAME`, `DEPT`, `SALARY`) "
- + "(VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15))))";
+ + "VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15)))";
sql(sql).ok(expected);
}
@@ -4669,7 +4669,7 @@ public class SqlParserTest {
+ ", `E`.`DEPTNO` = `T`.`DEPTNO`"
+ ", `E`.`SALARY` = (`T`.`SALARY` * 0.1)\n"
+ "WHEN NOT MATCHED THEN INSERT (`NAME`, `DEPT`, `SALARY`) "
- + "(VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15))))";
+ + "VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15)))";
sql(sql).ok(expected);
}
@@ -4696,7 +4696,7 @@ public class SqlParserTest {
final String expected = "MERGE INTO `EMPS` AS `E`\n"
+ "USING `TEMPS` AS `T`\n"
+ "ON (`E`.`EMPNO` = `T`.`EMPNO`)\n"
- + "WHEN NOT MATCHED THEN INSERT (`A`, `B`) (VALUES (ROW(1, 2)))";
+ + "WHEN NOT MATCHED THEN INSERT (`A`, `B`) VALUES (ROW(1, 2))";
sql(sql2).ok(expected);
// As sql1, removing unmatched '(', therefore valid
@@ -10225,7 +10225,7 @@ public class SqlParserTest {
+ ", `DEPTNO` = `T`.`DEPTNO`"
+ ", `SALARY` = (`T`.`SALARY` * 0.1)\n"
+ "WHEN NOT MATCHED THEN INSERT (`NAME`, `DEPT`, `SALARY`) "
- + "(VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15))))";
+ + "VALUES (ROW(`T`.`NAME`, 10, (`T`.`SALARY` * 0.15)))";
sql(sql).ok(expected);
}