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>