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

chengzhang 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 3d6b4d89495 Fix oracle create cluster syntax (#29290)
3d6b4d89495 is described below

commit 3d6b4d89495e5c96589fed77ade7becb27a7bf86
Author: niu niu <[email protected]>
AuthorDate: Wed Dec 6 08:32:15 2023 +0800

    Fix oracle create cluster syntax (#29290)
---
 .../oracle/src/main/antlr4/imports/oracle/DDLStatement.g4    | 12 +++++++-----
 .../it/parser/src/main/resources/case/ddl/create-cluster.xml |  4 ++++
 .../src/main/resources/sql/supported/ddl/create-cluster.xml  |  4 ++++
 3 files changed, 15 insertions(+), 5 deletions(-)

diff --git 
a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 
b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index 2c0f6d6b407..d2f5ac371cc 100644
--- a/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ b/parser/sql/dialect/oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -4223,11 +4223,13 @@ alterType
     ;
 
 createCluster
-    : CREATE CLUSTER (schemaName DOT_)? clusterName
-    LP_ (columnName dataType SORT? (COMMA_ columnName dataType SORT?)*) RP_
-    (physicalAttributesClause | SET sizeClause | TABLESPACE tablespaceName | 
INDEX |
-    (SINGLE TABLE)? HASHKEYS INTEGER_ (HASH IS functionName LP_ (argument 
(COMMA_ argument)*) RP_)?)?
-    parallelClause? (NOROWDEPENDENCIES | ROWDEPENDENCIES)? (CACHE | NOCACHE)?
+    : CREATE CLUSTER (schemaName DOT_)? clusterName LP_ (columnName dataType 
(COLLATE columnCollationName)? SORT? (COMMA_ columnName dataType (COLLATE 
columnCollationName)? SORT?)*) RP_
+    ( physicalAttributesClause | SIZE sizeClause | TABLESPACE tablespaceName | 
INDEX | (SINGLE TABLE)? HASHKEYS INTEGER_ (HASH IS expr)?)? parallelClause?
+    ( NOROWDEPENDENCIES | ROWDEPENDENCIES)? (CACHE | NOCACHE)? 
clusterRangePartitions?
+    ;
+
+clusterRangePartitions
+    : PARTITION BY RANGE columns LP_ (PARTITION partitionName? 
rangeValuesClause tablePartitionDescription) (COMMA_ (PARTITION partitionName? 
rangeValuesClause tablePartitionDescription))* RP_
     ;
 
 createJava
diff --git a/test/it/parser/src/main/resources/case/ddl/create-cluster.xml 
b/test/it/parser/src/main/resources/case/ddl/create-cluster.xml
index ce71802636c..bc4324aa13b 100644
--- a/test/it/parser/src/main/resources/case/ddl/create-cluster.xml
+++ b/test/it/parser/src/main/resources/case/ddl/create-cluster.xml
@@ -49,4 +49,8 @@
     <create-cluster sql-case-id="create_cluster_hashkeys" />
     <create-cluster sql-case-id="create_cluster_single_table" />
     <create-cluster sql-case-id="create_cluster_single_table_hash" />
+    <create-cluster sql-case-id="create_cluster_size_initial_next" />
+    <create-cluster sql-case-id="create_cluster_hash_is_mod" />
+    <create-cluster sql-case-id="create_cluster_number_size" />
+    <create-cluster sql-case-id="create_cluster_number_size_hashkeys" />
 </sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/create-cluster.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/create-cluster.xml
index b1a5a521279..4460d23fcc9 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/create-cluster.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/create-cluster.xml
@@ -49,4 +49,8 @@
     <sql-case id="create_cluster_hashkeys" value="CREATE CLUSTER test_cluster 
(col1 NUMBER) HASHKEYS 5" db-types="Oracle" />
     <sql-case id="create_cluster_single_table" value="CREATE CLUSTER 
test_cluster (col1 NUMBER) SINGLE TABLE HASHKEYS 5" db-types="Oracle" />
     <sql-case id="create_cluster_single_table_hash" value="CREATE CLUSTER 
test_cluster (col1 NUMBER) SINGLE TABLE HASHKEYS 5 HASH IS MOD(arg1, arg2)" 
db-types="Oracle" />
+    <sql-case id="create_cluster_size_initial_next" value="CREATE CLUSTER 
language (cust_language VARCHAR2(3)) SIZE 512 HASHKEYS 10 STORAGE (INITIAL 100k 
next 50k)" db-types="Oracle" />
+    <sql-case id="create_cluster_hash_is_mod" value="CREATE CLUSTER address 
(postal_code NUMBER, country_id CHAR(2)) HASHKEYS 20 HASH IS MOD(postal_code + 
country_id, 101)" db-types="Oracle" />
+    <sql-case id="create_cluster_number_size" value="CREATE CLUSTER 
employees_departments_cluster (department_id NUMBER(4)) SIZE 512" 
db-types="Oracle" />
+    <sql-case id="create_cluster_number_size_hashkeys" value="CREATE CLUSTER 
employees_departments_cluster (department_id NUMBER(4)) SIZE 8192 HASHKEYS 100" 
db-types="Oracle" />
 </sql-cases>

Reply via email to