This is an automated email from the ASF dual-hosted git repository.

wuweijie pushed a commit to branch revert-27534-27533
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git

commit cf0edc09d649f43a8b1ce5e2985b4ae46b0c6730
Author: 吴伟杰 <[email protected]>
AuthorDate: Fri Jul 28 15:44:53 2023 +0800

    Revert "Fix parsing Oracle INSERT with multiple values (#27534)"
    
    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" />

Reply via email to