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>