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 916976a31aa Support Oracle sample clause parse (#36751)
916976a31aa is described below
commit 916976a31aadfbe1a6ccc373fc432b6f89677715
Author: ZhangCheng <[email protected]>
AuthorDate: Tue Sep 30 14:30:29 2025 +0800
Support Oracle sample clause parse (#36751)
---
.../oracle/src/main/antlr4/imports/oracle/BaseRule.g4 | 8 --------
.../oracle/src/main/antlr4/imports/oracle/DMLStatement.g4 | 10 +++++++++-
test/it/parser/src/main/resources/case/dml/select.xml | 13 +++++++++++++
.../parser/src/main/resources/sql/supported/dml/select.xml | 1 +
4 files changed, 23 insertions(+), 9 deletions(-)
diff --git
a/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
b/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index 6f028e02bb6..f808ff59448 100644
---
a/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++
b/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -1144,14 +1144,6 @@ analyticViewName
: (owner DOT_)? name
;
-samplePercent
- : numberLiterals
- ;
-
-seedValue
- : numberLiterals
- ;
-
namespace
: identifier
;
diff --git
a/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
b/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
index 1ab24495bcc..2194de6282b 100644
---
a/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
+++
b/parser/sql/engine/dialect/oracle/src/main/antlr4/imports/oracle/DMLStatement.g4
@@ -547,7 +547,15 @@ unpivotInClauseExpr
;
sampleClause
- : SAMPLE BLOCK? LP_ samplePercent RP_ (SEED LP_ seedValue RP_)?
+ : SAMPLE BLOCK? LP_ samplePercent RP_ seedValue?
+ ;
+
+samplePercent
+ : numberLiterals (COMMA_ numberLiterals)?
+ ;
+
+seedValue
+ : SEED LP_ numberLiterals RP_
;
containersClause
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 1b64af1c953..b214dcd6eb2 100644
--- a/test/it/parser/src/main/resources/case/dml/select.xml
+++ b/test/it/parser/src/main/resources/case/dml/select.xml
@@ -11787,4 +11787,17 @@
<simple-table name="Person" start-index="14" stop-index="19" />
</from>
</select>
+
+ <select sql-case-id="select_with_sample_clause">
+ <projections start-index="7" stop-index="13">
+ <expression-projection text="1" alias="C1" start-index="7"
stop-index="13">
+ <expr start-index="7" stop-index="7">
+ <literal-expression value="1" start-index="7"
stop-index="7"/>
+ </expr>
+ </expression-projection>
+ </projections>
+ <from start-index="20" stop-index="68">
+ <simple-table alias="T_ORDER" name="T_ORDER" start-index="20"
stop-index="68"/>
+ </from>
+ </select>
</sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
index 4f7228dcfcf..19616bb2413 100644
--- a/test/it/parser/src/main/resources/sql/supported/dml/select.xml
+++ b/test/it/parser/src/main/resources/sql/supported/dml/select.xml
@@ -377,4 +377,5 @@
<sql-case id="select_for_timestamp_as_of_hint" value="SELECT * FROM Person
OPTION (FOR TIMESTAMP AS OF '2024-03-13T19:39:35.28');" db-types="SQLServer"/>
<sql-case id="select_force_single_node_plan_hint" value="SELECT * FROM
Person OPTION (FORCE SINGLE NODE PLAN);" db-types="SQLServer"/>
<sql-case id="select_querytraceon_hint" value="SELECT * FROM Person OPTION
(QUERYTRACEON 4199, QUERYTRACEON 4137);" db-types="SQLServer"/>
+ <sql-case id="select_with_sample_clause" value="SELECT 1 AS C1 FROM
T_ORDER SAMPLE BLOCK (1.43302, 8) SEED(9) T_ORDER" db-types="Oracle" />
</sql-cases>