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 b263c2caede Update Oracle DML SLELECT CUME_DIST statement parse
(#22075)
b263c2caede is described below
commit b263c2caede42390fe5cd85a5d89b4b03ea19e35
Author: Zichao <[email protected]>
AuthorDate: Fri Nov 11 20:21:31 2022 +1300
Update Oracle DML SLELECT CUME_DIST statement parse (#22075)
---
.../dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4 | 2 +-
.../dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4 | 4 ++++
test/parser/src/main/resources/case/dml/select.xml | 9 +++++++++
test/parser/src/main/resources/sql/supported/dml/select.xml | 1 +
4 files changed, 15 insertions(+), 1 deletion(-)
diff --git
a/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
b/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index cb5c594f4fe..36d52bdfbaa 100644
--- a/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -515,7 +515,7 @@ aggregationFunction
;
aggregationFunctionName
- : MAX | MIN | SUM | COUNT | AVG | GROUPING | LISTAGG | PERCENT_RANK |
PERCENTILE_CONT | PERCENTILE_DISC
+ : MAX | MIN | SUM | COUNT | AVG | GROUPING | LISTAGG | PERCENT_RANK |
PERCENTILE_CONT | PERCENTILE_DISC | CUME_DIST
;
listaggOverflowClause
diff --git
a/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
b/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
index d0a9bc80f77..8965dbb5ced 100644
--- a/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
+++ b/sql-parser/dialect/oracle/src/main/antlr4/imports/oracle/Keyword.g4
@@ -587,3 +587,7 @@ PERCENTILE_CONT
PERCENTILE_DISC
: P E R C E N T I L E UL_ D I S C
;
+
+CUME_DIST
+ : C U M E UL_ D I S T
+ ;
diff --git a/test/parser/src/main/resources/case/dml/select.xml
b/test/parser/src/main/resources/case/dml/select.xml
index a259f50b70a..10ac13e3e88 100644
--- a/test/parser/src/main/resources/case/dml/select.xml
+++ b/test/parser/src/main/resources/case/dml/select.xml
@@ -4522,4 +4522,13 @@
<column-item name="department_id" start-index="225"
stop-index="237" />
</order-by>
</select>
+
+ <select sql-case-id="select_aggregate_cume_dist">
+ <projections start-index="7" stop-index="95">
+ <expression-projection text="CUME_DIST(15500, .05) WITHIN GROUP
(ORDER BY salary, commission_pct)" alias="Cume-Dist of 15500" start-index="7"
stop-index="95" />
+ </projections>
+ <from>
+ <simple-table name="employees" start-index="102" stop-index="110"
/>
+ </from>
+ </select>
</sql-parser-test-cases>
diff --git a/test/parser/src/main/resources/sql/supported/dml/select.xml
b/test/parser/src/main/resources/sql/supported/dml/select.xml
index 7fa796fb25f..13d0eb5147b 100644
--- a/test/parser/src/main/resources/sql/supported/dml/select.xml
+++ b/test/parser/src/main/resources/sql/supported/dml/select.xml
@@ -138,4 +138,5 @@
<sql-case id="select_analytic_percent_rank" value="SELECT department_id,
last_name, salary, PERCENT_RANK() OVER (PARTITION BY department_id ORDER BY
salary DESC) AS pr FROM employees ORDER BY pr, salary, last_name;"
db-types="Oracle" />
<sql-case id="select_aggregate_percentile_cont" value="SELECT
department_id, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY salary DESC) 'Median
cont' FROM employees;" db-types="Oracle" />
<sql-case id="select_aggregate_percentile_disc" value="SELECT
department_id, last_name, salary, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY
salary DESC) OVER (PARTITION BY department_id) 'Percentile_Disc' FROM employees
WHERE department_id in (30, 60) ORDER BY last_name, salary, department_id;"
db-types="Oracle" />
+ <sql-case id="select_aggregate_cume_dist" value="SELECT CUME_DIST(15500,
.05) WITHIN GROUP (ORDER BY salary, commission_pct) 'Cume-Dist of 15500' FROM
employees;" db-types="Oracle" />
</sql-cases>