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

duanzhengqiang 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 9238dc2943f Support oracle select into clause parsing (#27353)
9238dc2943f is described below

commit 9238dc2943fbf332e2691ad86092e5c63b5e9ac0
Author: ZhangCheng <[email protected]>
AuthorDate: Fri Jul 21 19:03:37 2023 +0800

    Support oracle select into clause parsing (#27353)
    
    * Support oracle select into clause parsing
    
    * Support oracle select into clause parsing
    
    * Support oracle select into clause parsing
---
 .../oracle/src/main/antlr4/imports/oracle/DMLStatement.g4  | 14 +++++++++++++-
 test/it/parser/src/main/resources/case/dml/select-into.xml |  9 +++++++++
 .../src/main/resources/sql/supported/dml/select-into.xml   |  1 +
 .../src/main/resources/sql/unsupported/unsupported.xml     |  1 -
 4 files changed, 23 insertions(+), 2 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 3c740fb716e..29d2cfa1ae1 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
@@ -148,7 +148,19 @@ parenthesisSelectSubquery
     ;
 
 queryBlock
-    : withClause? SELECT hint? duplicateSpecification? selectList 
selectFromClause whereClause? hierarchicalQueryClause? groupByClause? 
modelClause?
+    : withClause? SELECT hint? duplicateSpecification? selectList 
selectIntoClause? selectFromClause whereClause? hierarchicalQueryClause? 
groupByClause? modelClause?
+    ;
+
+selectIntoClause
+    : (BULK COLLECT)? INTO variableNames
+    ;
+
+variableNames
+    : variableName (COMMA_ variableName)*
+    ;
+
+variableName
+    : identifier | stringLiterals
     ;
 
 withClause
diff --git a/test/it/parser/src/main/resources/case/dml/select-into.xml 
b/test/it/parser/src/main/resources/case/dml/select-into.xml
index 49f7c95b83f..1e0a8746771 100644
--- a/test/it/parser/src/main/resources/case/dml/select-into.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-into.xml
@@ -201,4 +201,13 @@
             <expression-projection text="1" start-index="7" stop-index="7" />
         </projections>
     </select>
+
+    <select sql-case-id="select_into_with_variable">
+        <projections start-index="7" stop-index="17" literal-start-index="7" 
literal-stop-index="17">
+            <column-projection name="select_list" start-index="7" 
stop-index="17" literal-start-index="7" literal-stop-index="17" />
+        </projections>
+        <from>
+            <simple-table name="table_or_view_name" start-index="50" 
stop-index="67" literal-start-index="50" literal-stop-index="67" />
+        </from>
+    </select>
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml 
b/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
index 7499335b436..9ff9bc84874 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select-into.xml
@@ -28,4 +28,5 @@
     <sql-case id="select_into_with_lock_after_into" value="SELECT status FROM 
t_order WHERE order_id = ? INTO @var1 FOR UPDATE " db-types="MySQL" />
     <sql-case id="select_into_with_lock_before_into" value="SELECT status FROM 
t_order WHERE order_id = ? FOR UPDATE INTO @var1" db-types="MySQL" />
     <sql-case id="select_into_param_without_at" value="SELECT 1 INTO a" 
db-types="MySQL" />
+    <sql-case id="select_into_with_variable" value="SELECT select_list INTO 
record_variable_name FROM table_or_view_name" db-types="Oracle" />
 </sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml 
b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
index 76d07bfa0a6..0da27863a01 100644
--- a/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
+++ b/test/it/parser/src/main/resources/sql/unsupported/unsupported.xml
@@ -17,7 +17,6 @@
   -->
 
 <sql-cases>
-    <sql-case id="assert_select_into_SQL" value="SELECT * INTO t_order_new 
FROM t_order" db-types="Oracle" />
     <sql-case id="assert_select_with_json_extract_sign_with_parameter_marker" 
value="SELECT * FROM t_order WHERE order_id -&gt; ?" db-types="MySQL" />
     <sql-case 
id="assert_select_with_json_unquote_extract_sign_with_parameter_marker" 
value="SELECT * FROM t_order WHERE order_id -&gt;&gt; ?" db-types="MySQL" />
     <sql-case id="assert_insert_with_first" value="INSERT FIRST INTO TABLE_XXX 
(field1) VALUES (field1) SELECT field1 FROM TABLE_XXX2" db-types="Oracle" />

Reply via email to