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 939697f8674 Support parsing Oracle EXPLAIN PLAN sql(27147) (#29667)
939697f8674 is described below

commit 939697f86740cea28dc2ac6b1de86bc06fd41181
Author: kanha gupta <[email protected]>
AuthorDate: Tue Jan 9 07:19:36 2024 +0530

    Support parsing Oracle EXPLAIN PLAN sql(27147) (#29667)
    
    * Support parsing Oracle EXPLAIN PLAN sql(27147)
    
    * Support parsing Oracle EXPLAIN PLAN sql(27144)
---
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |  1 +
 .../parser/src/main/resources/case/dal/explain.xml | 49 ++++++++++++++++++++++
 .../main/resources/case/ddl/flashback-database.xml |  2 +
 .../main/resources/sql/supported/dal/explain.xml   |  4 ++
 .../sql/supported/ddl/flashback-database.xml       |  2 +
 5 files changed, 58 insertions(+)

diff --git 
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4 
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index ecb6be25967..c056d55ad8c 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -1363,6 +1363,7 @@ namespace
 
 restorePoint
     : identifier
+    | stringLiterals
     ;
 
 scnValue
diff --git a/test/it/parser/src/main/resources/case/dal/explain.xml 
b/test/it/parser/src/main/resources/case/dal/explain.xml
index d4ea9be6420..e8aa2b6cc6d 100644
--- a/test/it/parser/src/main/resources/case/dal/explain.xml
+++ b/test/it/parser/src/main/resources/case/dal/explain.xml
@@ -1214,4 +1214,53 @@
             </where>
         </select>
     </describe>
+
+    <describe sql-case-id="explain_for_select_emp_range" >
+        <select>
+            <projections start-index="24" stop-index="24">
+                <shorthand-projection start-index="24" stop-index="24"/>
+            </projections>
+            <from>
+                <simple-table name="emp_range" start-index="31" 
stop-index="39"/>
+            </from>
+        </select>
+    </describe>
+
+    <describe sql-case-id="explain_for_select_emp_comp" >
+        <select>
+            <projections start-index="24" stop-index="24">
+                <shorthand-projection start-index="24" stop-index="24"/>
+            </projections>
+            <from>
+                <simple-table name="emp_comp" start-index="31" 
stop-index="38"/>
+            </from>
+        </select>
+    </describe>
+
+    <describe sql-case-id="explain_for_select_with_comments">
+        <select>
+            <projections start-index="44" stop-index="59">
+                <column-projection name="deptno" start-index="44" 
stop-index="49"/>
+                <aggregation-projection type="AVG" expression="avg(sal)" 
start-index="52" stop-index="59"/>
+            </projections>
+            <from>
+                <simple-table name="emp" start-index="66" stop-index="68"/>
+            </from>
+            <group-by>
+                <column-item name="deptno" start-index="79" stop-index="84"/>
+            </group-by>
+        </select>
+        <comment text="/*+ result_cache */" start-index="24" stop-index="42"/>
+    </describe>
+
+    <describe sql-case-id="explain_for_select_job_history" >
+        <select>
+            <projections start-index="24" stop-index="24">
+                <shorthand-projection start-index="24" stop-index="24"/>
+            </projections>
+            <from>
+                <simple-table name="v_emp_job_history" start-index="31" 
stop-index="47"/>
+            </from>
+        </select>
+    </describe>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/flashback-database.xml 
b/test/it/parser/src/main/resources/case/ddl/flashback-database.xml
index 89b80640e3f..1c9e969916a 100644
--- a/test/it/parser/src/main/resources/case/ddl/flashback-database.xml
+++ b/test/it/parser/src/main/resources/case/ddl/flashback-database.xml
@@ -21,4 +21,6 @@
     <flashback-database sql-case-id="flashback_database_to_timestamp" />
     <flashback-database sql-case-id="flashback_database_to_restore_point" />
     <flashback-database sql-case-id="flashback_database_to_before_resetlogs" />
+    <flashback-database 
sql-case-id="flashback_database_to_restore_point_string"/>
+    <flashback-database sql-case-id="flashback_only_database_to_scn" />
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dal/explain.xml 
b/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
index e498bfe7cad..5871e69b441 100644
--- a/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dal/explain.xml
@@ -78,4 +78,8 @@
     <sql-case id="explain_for_select_with_function" value="EXPLAIN PLAN FOR 
SELECT SUM(amount_sold) FROM sales WHERE TO_CHAR(time_id,'yyyy') = '2000'" 
db-types="Oracle" />
     <sql-case id="explain_for_select_with_function_and_function" 
value="EXPLAIN PLAN FOR SELECT SUM(quantity_sold) FROM sales WHERE time_id = 
TO_TIMESTAMP('1-jan-2000', 'dd-mon-yyyy')" db-types="Oracle" />
     <sql-case id="explain_for_select" value="EXPLAIN PLAN FOR SELECT * FROM 
sh.customers WHERE cust_city='Los Angeles' AND cust_state_province='CA'" 
db-types="Oracle" />
+    <sql-case id="explain_for_select_emp_range" value="EXPLAIN PLAN FOR SELECT 
* FROM emp_range;" db-types="Oracle"/>
+    <sql-case id="explain_for_select_emp_comp" value="EXPLAIN PLAN FOR SELECT 
* FROM emp_comp;" db-types="Oracle"/>
+    <sql-case id="explain_for_select_with_comments" value="EXPLAIN PLAN FOR 
select /*+ result_cache */ deptno, avg(sal) from emp group by deptno;" 
db-types="Oracle"/>
+    <sql-case id="explain_for_select_job_history" value="EXPLAIN PLAN FOR 
SELECT * FROM v_emp_job_history;" db-types="Oracle" />
 </sql-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/flashback-database.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/flashback-database.xml
index fde5aeac002..8859a861525 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/flashback-database.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/flashback-database.xml
@@ -21,4 +21,6 @@
     <sql-case id="flashback_database_to_timestamp" value="FLASHBACK DATABASE 
TO TIMESTAMP SYSDATE-1" db-types="Oracle" />
     <sql-case id="flashback_database_to_restore_point" value="FLASHBACK 
DATABASE sample TO RESTORE POINT good_data" db-types="Oracle" />
     <sql-case id="flashback_database_to_before_resetlogs" value="FLASHBACK 
DATABASE TO BEFORE RESETLOGS" db-types="Oracle" />
+    <sql-case id="flashback_database_to_restore_point_string" value="FLASHBACK 
DATABASE TO RESTORE POINT 'before_upgrade';" db-types="Oracle" />
+    <sql-case id="flashback_only_database_to_scn" value="FLASHBACK DATABASE TO 
SCN 202381;" db-types="Oracle" />
 </sql-cases>

Reply via email to