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>

Reply via email to