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>