This is an automated email from the ASF dual-hosted git repository.
panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new 3bb01afa372 Revert "Fix parsing Oracle INSERT with multiple values
(#27534)" (#27538)
3bb01afa372 is described below
commit 3bb01afa3727f91ec734a12ea3371eb3454aadc6
Author: 吴伟杰 <[email protected]>
AuthorDate: Fri Jul 28 15:47:12 2023 +0800
Revert "Fix parsing Oracle INSERT with multiple values (#27534)" (#27538)
This reverts commit 3bca9742d0809519f0a5bc0d478afc606af9c5d0.
---
.../oracle/src/main/antlr4/imports/oracle/DMLStatement.g4 | 2 +-
.../visitor/statement/type/OracleDMLStatementVisitor.java | 11 ++++-------
.../it/parser/src/main/resources/sql/supported/dml/insert.xml | 2 +-
3 files changed, 6 insertions(+), 9 deletions(-)
diff --git
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
index e22b8d96476..7a55bebe744 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
@@ -52,7 +52,7 @@ insertIntoClause
;
insertValuesClause
- : VALUES assignmentValues (COMMA_ assignmentValues)*
+ : VALUES assignmentValues
;
returningClause
diff --git
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
index 8deef3ee071..61d74d29a19 100644
---
a/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
+++
b/parser/sql/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
@@ -115,6 +115,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.BinaryOp
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.DatetimeExpression;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.FunctionSegment;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.IntervalExpressionProjection;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.XmlPiFunctionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.XmlQueryAndExistsFunctionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.XmlSerializeFunctionSegment;
@@ -127,7 +128,6 @@ import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.expr.subquery
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ColumnProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.DatetimeProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ExpressionProjectionSegment;
-import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.IntervalExpressionProjection;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ProjectionsSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.segment.dml.item.ShorthandProjectionSegment;
@@ -163,7 +163,6 @@ import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.Ora
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleSelectStatement;
import
org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleUpdateStatement;
-import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -295,11 +294,9 @@ public final class OracleDMLStatementVisitor extends
OracleStatementVisitor impl
return result;
}
- private Collection<InsertValuesSegment> createInsertValuesSegments(final
List<AssignmentValuesContext> ctx) {
- Collection<InsertValuesSegment> result = new ArrayList<>(ctx.size());
- for (AssignmentValuesContext each : ctx) {
- result.add((InsertValuesSegment) visit(each));
- }
+ private Collection<InsertValuesSegment> createInsertValuesSegments(final
AssignmentValuesContext ctx) {
+ Collection<InsertValuesSegment> result = new LinkedList<>();
+ result.add((InsertValuesSegment) visit(ctx));
return result;
}
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
b/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
index d89c68f11ac..c5cad9f5667 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/insert.xml
@@ -47,7 +47,7 @@
<sql-case id="insert_on_duplicate_key_update_with_placeholders"
value="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?) ON
DUPLICATE KEY UPDATE status = ?" db-types="MySQL,openGauss" />
<sql-case id="insert_on_duplicate_key_update_with_placeholders_postgres"
value="INSERT INTO t_order (order_id, user_id, status) VALUES (?, ?, ?) ON
CONFLICT (order_id) DO UPDATE SET status = ?" db-types="PostgreSQL" />
<sql-case id="insert_on_duplicate_key_update_with_complicated_expression"
value="INSERT INTO emp(order_id,emp_id,age,salary) VALUES (?,?,?,?) ON
DUPLICATE KEY UPDATE salary = VALUES(salary)+VALUES(salary)*0.2"
db-types="MySQL" />
- <sql-case id="insert_with_multiple_values" value="INSERT INTO t_order
(order_id, user_id, status) VALUES (1, 1, 'insert'), (2, 2, 'insert2')"
db-types="MySQL,Oracle" />
+ <sql-case id="insert_with_multiple_values" value="INSERT INTO t_order
(order_id, user_id, status) VALUES (1, 1, 'insert'), (2, 2, 'insert2')"
db-types="MySQL" />
<sql-case id="insert_on_duplicate_key_update_with_table_identifier"
value="INSERT INTO t_order (t_order.order_id, t_order.user_id, t_order.status)
VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE t_order.status =
VALUES(t_order.status)" db-types="MySQL" />
<sql-case id="insert_with_geography" value="INSERT INTO t_order(user_id,
order_id, start_point,rule) VALUES (?, ?,
ST_GeographyFromText('SRID=4326;POINT(100 200)'), ?::jsonb)"
db-types="PostgreSQL,openGauss" />
<sql-case id="insert_with_one_auto_increment_column" value="INSERT INTO
t_auto_increment_table VALUES()" db-types="MySQL" />