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 <[email protected]>
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 &gt; 15000;" 
db-types="Oracle" />
 </sql-cases>

Reply via email to