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

jianglongtao 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 12ca71c5ecc [Oracle SQL] Support HR-5-158 of Oracle SQL (#27603)
12ca71c5ecc is described below

commit 12ca71c5eccf26443851ba709d0bd1e6e3d414b3
Author: Liao Lanyu <1435078...@qq.com>
AuthorDate: Tue Aug 1 12:11:05 2023 +0800

    [Oracle SQL] Support HR-5-158 of Oracle SQL (#27603)
    
    * tmp
    
    * support HR-5-158 test
---
 .../src/main/antlr4/imports/oracle/BaseRule.g4     |  2 +-
 .../resources/case/dml/select-special-function.xml | 41 ++++++++++++++++++++++
 .../parser/src/main/resources/case/dml/select.xml  |  3 ++
 .../sql/supported/dml/select-special-function.xml  |  1 +
 4 files changed, 46 insertions(+), 1 deletion(-)

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 28b6c93ffcd..c504038c6b8 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
@@ -325,7 +325,7 @@ unreservedWord3
     | USE_PRIVATE_OUTLINES | USE_SEMI | USE_TTT_FOR_GSETS | USE_WEAK_NAME_RESL 
| VALIDATE | VALIDATION | VARIANCE | VAR_POP
     | VAR_SAMP | VECTOR_READ | VECTOR_READ_TRACE | VERSIONING | 
VERSIONS_ENDSCN | VERSIONS_ENDTIME | VERSIONS_OPERATION
     | VERSIONS_STARTSCN | VERSIONS_STARTTIME | VERSIONS_XID | VOLUME | VSIZE | 
WELLFORMED | WHENEVER | WHITESPACE
-    | WIDTH_BUCKET | WRAPPED | XID | XMLATTRIBUTES | XMLCAST | XMLCDATA | 
XMLCOLATTVAL | XMLCOMMENT | XMLCONCAT | XMLDIFF
+    | WIDTH_BUCKET | WRAPPED | XID | XMLAGG | XMLATTRIBUTES | XMLCAST | 
XMLCDATA | XMLCOLATTVAL | XMLCOMMENT | XMLCONCAT | XMLDIFF
     | XMLEXISTS | XMLEXISTS2 | XMLFOREST | XMLINDEX_REWRITE | 
XMLINDEX_REWRITE_IN_SELECT | XMLINDEX_SEL_IDX_TBL | XMLISNODE
     | XMLISVALID | XMLNAMESPACES | XMLPARSE | XMLPATCH | XMLPI | XMLQUERY | 
XMLROOT | XMLSERIALIZE | XMLTABLE | XMLTOOBJECT
     | XMLTRANSFORM | XMLTRANSFORMBLOB | XML_DML_RWT_STMT | XPATHTABLE | 
XS_SYS_CONTEXT | X_DYN_PRUNE
diff --git 
a/test/it/parser/src/main/resources/case/dml/select-special-function.xml 
b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
index 13c6cac9258..8663b827d83 100644
--- a/test/it/parser/src/main/resources/case/dml/select-special-function.xml
+++ b/test/it/parser/src/main/resources/case/dml/select-special-function.xml
@@ -460,4 +460,45 @@
             <column-item name="hire_date" order-direction="ASC" 
start-index="174" stop-index="182" literal-start-index="174" 
literal-stop-index="182" />
         </order-by>
     </select>
+
+    <select sql-case-id="select_sys_xml_agg">
+        <projections start-index="7" stop-index="46">
+            <expression-projection text="SYS_XMLAGG(SYS_XMLGEN(last_name))" 
alias="XMLAGG" start-index="7" stop-index="46">
+                <expr>
+                    <function function-name="SYS_XMLAGG" start-index="7" 
stop-index="39" text="SYS_XMLAGG(SYS_XMLGEN(last_name))">
+                        <parameter>
+                            <function function-name="SYS_XMLGEN" 
start-index="18" stop-index="38" text="SYS_XMLGEN(last_name)">
+                                <parameter>
+                                    <column name="last_name" start-index="29" 
stop-index="37"/>
+                                </parameter>
+                            </function>
+                        </parameter>
+                    </function>
+                </expr>
+            </expression-projection>
+        </projections>
+        <from>
+            <simple-table name="employees" start-index="53" stop-index="61" />
+        </from>
+        <where start-index="63" stop-index="87">
+            <expr>
+                <binary-operation-expression start-index="69" stop-index="87" >
+                    <left>
+                        <column name="last_name" start-index="69" 
stop-index="77"/>
+                    </left>
+                    <operator>LIKE</operator>
+                    <right>
+                        <list-expression start-index="84" stop-index="87">
+                            <items>
+                                <literal-expression value="R%" 
start-index="84" stop-index="87" />
+                            </items>
+                        </list-expression>
+                    </right>
+                </binary-operation-expression>
+            </expr>
+        </where>
+        <order-by>
+            <column-item name="xmlagg" order-direction="ASC" start-index="98" 
stop-index="103"/>
+        </order-by>
+    </select>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/dml/select.xml 
b/test/it/parser/src/main/resources/case/dml/select.xml
index 5b887d7b48f..7561d8e8783 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -5983,6 +5983,9 @@
                 </binary-operation-expression>
             </expr>
         </where>
+        <order-by>
+            <column-item name="xmlagg" order-direction="ASC" start-index="106" 
stop-index="111"/>
+        </order-by>
     </select>
 
     <select sql-case-id="select_with_cover_pop_and_covar_samp">
diff --git 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
index 5bfadbd6c68..d6f4c165697 100644
--- 
a/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
+++ 
b/test/it/parser/src/main/resources/sql/supported/dml/select-special-function.xml
@@ -40,4 +40,5 @@
     <sql-case id="select_extract_function" value="SELECT EXTRACT(YEAR FROM 
TIMESTAMP '2001-02-16 20:38:40')" db-types="PostgreSQL,openGauss" />
     <sql-case id="select_extract_function_for_oracle" value="SELECT 
EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40') FROM DUAL" db-types="Oracle" 
/>
     <sql-case id="select_mod_function" value="SELECT MOD(order_id, 1) from 
t_order" db-types="PostgreSQL,openGauss" />
+    <sql-case id="select_sys_xml_agg" value="SELECT 
SYS_XMLAGG(SYS_XMLGEN(last_name)) XMLAGG FROM employees WHERE last_name LIKE 
'R%' ORDER BY xmlagg;" db-types="Oracle" />
 </sql-cases>

Reply via email to