You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2024/04/07 00:13:54 UTC
(shardingsphere) branch master updated: Enhance the support for SQL Server SQL parsing in ShardingSphere (#30792)
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 abcc951e6d7 Enhance the support for SQL Server SQL parsing in ShardingSphere (#30792)
abcc951e6d7 is described below
commit abcc951e6d77b205b69a869734ff7f4ef55012da
Author: zhuruixuan <14...@users.noreply.github.com>
AuthorDate: Sun Apr 7 08:13:47 2024 +0800
Enhance the support for SQL Server SQL parsing in ShardingSphere (#30792)
* Change case
* Change sql
* Change g4
---
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 2 +-
.../src/main/resources/case/ddl/create-view.xml | 61 ++++++++++++++++++++++
.../resources/sql/supported/ddl/create-view.xml | 1 +
3 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index 1f9ed4a60b4..720889d0630 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -269,7 +269,7 @@ xmlTypeVirtualColumnsClause
;
xmlTypeViewClause
- : OF XMLTYPE xmlSchemaSpec? WITH OBJECT (IDENTIFIER | ID) (DEFAULT | LP_ expr (COMMA_ expr)* RL_)
+ : OF XMLTYPE xmlSchemaSpec? WITH OBJECT (IDENTIFIER | ID) (DEFAULT | LP_ expr (COMMA_ expr)* RP_)
;
xmlSchemaSpec
diff --git a/test/it/parser/src/main/resources/case/ddl/create-view.xml b/test/it/parser/src/main/resources/case/ddl/create-view.xml
index 6d28e86d425..077655e596c 100644
--- a/test/it/parser/src/main/resources/case/ddl/create-view.xml
+++ b/test/it/parser/src/main/resources/case/ddl/create-view.xml
@@ -2104,4 +2104,65 @@
</combine>
</select>
</create-view>
+
+ <create-view sql-case-id="create_view_select_sys_XMLGen" view-definition="SELECT sys_XMLGen(emp_t(e.employee_id, e.first_name, e.last_name, e.hire_date),XMLFormat('EMP')) FROM employees e WHERE salary > 15000">
+ <view name="employee_view" start-index="23" stop-index="35" />
+ <select>
+ <projections start-index="164" stop-index="252">
+ <expression-projection text="sys_XMLGen(emp_t(e.employee_id, e.first_name, e.last_name, e.hire_date),XMLFormat('EMP'))" start-index="164" stop-index="252">
+ <expr>
+ <function function-name="sys_XMLGen" text="sys_XMLGen(emp_t(e.employee_id, e.first_name, e.last_name, e.hire_date),XMLFormat('EMP'))" start-index="164" stop-index="252">
+ <parameter>
+ <function function-name="emp_t" text="emp_t(e.employee_id, e.first_name, e.last_name, e.hire_date)" start-index="175" stop-index="234">
+ <parameter>
+ <column name="employee_id" start-index="181" stop-index="193">
+ <owner name="e" start-index="181" stop-index="181" />
+ </column>
+ </parameter>
+ <parameter>
+ <column name="first_name" start-index="196" stop-index="207">
+ <owner name="e" start-index="196" stop-index="196"/>
+ </column>
+ </parameter>
+ <parameter>
+ <column name="last_name" start-index="210" stop-index="220">
+ <owner name="e" start-index="210" stop-index="210" />
+ </column>
+ </parameter>
+ <parameter>
+ <column name="hire_date" start-index="223" stop-index="233">
+ <owner name="e" start-index="223" stop-index="223" />
+ </column>
+ </parameter>
+ </function>
+ </parameter>
+ <parameter>
+ <function function-name="XMLFormat" text="XMLFormat('EMP')" start-index="236" stop-index="251">
+ <parameter>
+ <literal-expression value="EMP" start-index="246" stop-index="250" />
+ </parameter>
+ </function>
+ </parameter>
+ </function>
+ </expr>
+ </expression-projection>
+ </projections>
+ <from>
+ <simple-table alias="e" name="employees" start-index="259" stop-index="269"/>
+ </from>
+ <where start-index="271" stop-index="290">
+ <expr>
+ <binary-operation-expression start-index="277" stop-index="290">
+ <left>
+ <column name="salary" start-index="277" stop-index="282" />
+ </left>
+ <right>
+ <literal-expression value="15000" start-index="286" stop-index="290" />
+ </right>
+ <operator>></operator>
+ </binary-operation-expression>
+ </expr>
+ </where>
+ </select>
+ </create-view>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/create-view.xml b/test/it/parser/src/main/resources/sql/supported/ddl/create-view.xml
index 20ec0911755..2812513ed17 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/create-view.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/create-view.xml
@@ -95,4 +95,5 @@
<sql-case id="create_view_with_select_value" value="CREATE VIEW warehouse_view AS SELECT VALUE(p) AS warehouse_xml FROM xwarehouses p" db-types="Oracle" />
<sql-case id="create_view_select_to_number_to_char" value="CREATE VIEW time_view AS SELECT time_id, TO_NUMBER(TO_CHAR(time_id, 'ddd')) AS day_in_year FROM times" db-types="Oracle" />
<sql-case id="create_view_select_subquery_with_union_all" value="CREATE VIEW view_with_unionall AS (SELECT c.rowid crid, c.cust_id, 2 umarker FROM customers c WHERE c.cust_last_name = 'Smith' UNION ALL SELECT c.rowid crid, c.cust_id, 3 umarker FROM customers c WHERE c.cust_last_name = 'Jones')" db-types="Oracle" />
+ <sql-case id="create_view_select_sys_XMLGen" value="CREATE OR REPLACE VIEW employee_view OF XMLType WITH OBJECT ID (XMLCast(XMLQuery('/Emp/@empno' PASSING OBJECT_VALUE RETURNING CONTENT) AS BINARY_DOUBLE)) AS SELECT sys_XMLGen(emp_t(e.employee_id, e.first_name, e.last_name, e.hire_date),XMLFormat('EMP')) FROM employees e WHERE salary > 15000;" db-types="Oracle" />
</sql-cases>