You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2022/07/15 01:57:31 UTC
[shardingsphere] branch master updated: support alter diskgroup (#19126)
This is an automated email from the ASF dual-hosted git repository.
zhangliang 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 edc85e51cbd support alter diskgroup (#19126)
edc85e51cbd is described below
commit edc85e51cbd2daf2deef29561c6c6cb49c4bbd4e
Author: Trydamere <30...@qq.com>
AuthorDate: Fri Jul 15 09:57:25 2022 +0800
support alter diskgroup (#19126)
---
.../src/main/antlr4/imports/oracle/BaseRule.g4 | 119 ++++++++-
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 266 ++++++++++++++++++++-
.../main/antlr4/imports/oracle/OracleKeyword.g4 | 32 +++
.../sql/parser/autogen/OracleStatement.g4 | 1 +
.../impl/OracleDDLStatementSQLVisitor.java | 7 +
.../core/database/visitor/SQLVisitorRule.java | 2 +
.../statement/ddl/AlterDiskgroupStatement.java | 26 ++
.../oracle/ddl/OracleAlterDiskgroupStatement.java | 29 +++
.../jaxb/cases/domain/SQLParserTestCases.java | 5 +
.../ddl/AlterDiskgroupStatementTestCase.java | 26 ++
.../main/resources/case/ddl/alter-diskgroup.xml | 34 +++
.../sql/supported/ddl/alter-audit-policy.xml | 2 +-
.../sql/supported/ddl/alter-diskgroup.xml | 34 +++
13 files changed, 568 insertions(+), 15 deletions(-)
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
index fc93266f900..1cb8a719e6c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/BaseRule.g4
@@ -224,9 +224,6 @@ parameterValue
: literals | identifier
;
-directoryName
- : identifier
- ;
dispatcherName
: stringLiterals
@@ -620,13 +617,105 @@ fileName
;
asmFileName
- : STRING_
+ : fullyQualifiedFileName
+ | numericFileName
+ | incompleteFileName
+ | aliasFileName
+ ;
+
+fullyQualifiedFileName
+ : PLUS_ diskgroupName SLASH_ dbName SLASH_ fileType SLASH_ fileTypeTag DOT_ fileNumber DOT_ incarnationNumber
+ ;
+
+dbName
+ : identifier
+ ;
+
+fileType
+ : CONTROLFILE
+ | DATAFILE
+ | ONLINELOG
+ | ARCHIVELOG
+ | TEMPFILE
+ | BACKUPSET
+ | PARAMETERFILE
+ | DATAGUARDCONFIG
+ | FLASHBACK
+ | CHANGETRACKING
+ | DUMPSET
+ | XTRANSPORT
+ | AUTOBACKUP
+ ;
+
+fileTypeTag
+ : currentBackup
+ | tablespaceName
+ | groupGroup POUND_
+ | threadThread POUND_ UL_ seqSequence POUND_
+ | hasspfileTimestamp
+ | serverParameterFile
+ | dbName
+ | logLog POUND_
+ | changeTrackingFile
+ | userObj POUND_ UL_ fileName POUND_
+ ;
+
+currentBackup
+ : identifier
+ ;
+
+groupGroup
+ : identifier
+ ;
+
+threadThread
+ : identifier
+ ;
+
+seqSequence
+ : identifier
+ ;
+
+hasspfileTimestamp
+ : timestampValue
+ ;
+
+serverParameterFile
+ : identifier
+ ;
+
+logLog
+ : identifier
+ ;
+
+changeTrackingFile
+ : identifier
+ ;
+
+userObj
+ : identifier
+ ;
+
+numericFileName
+ : PLUS_ diskgroupName DOT_ fileNumber DOT_ incarnationNumber
+ ;
+
+incompleteFileName
+ : PLUS_ diskgroupName (LP_ templateName RP_)?
+ ;
+
+aliasFileName
+ : PLUS_ diskgroupName (LP_ templateName RP_)? SLASH_ aliasName
;
fileNumber
: INTEGER_
;
+incarnationNumber
+ : INTEGER_
+ ;
+
instanceName
: STRING_
;
@@ -668,7 +757,7 @@ templateName
;
aliasName
- : identifier
+ : pathString
;
domain
@@ -1325,3 +1414,23 @@ parameterType
returnType
: identifier
;
+
+failgroupName
+ : identifier
+ ;
+
+asmVolumeName
+ : identifier
+ ;
+
+mountpathName
+ : identifier
+ ;
+
+usageName
+ : identifier
+ ;
+
+usergroupName
+ : STRING_
+ ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
index 178d74d1f0d..5bd2cc465b5 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/DDLStatement.g4
@@ -2420,16 +2420,9 @@ dropFlashbackArchive
;
createDiskgroup
- : CREATE DISKGROUP diskgroupName (redundancyClause REDUNDANCY)? diskClause+ attribute?
+ : CREATE DISKGROUP diskgroupName ((HIGH | NORMAL | FLEX | EXTENDED (SITE siteName)? | EXTERNAL) REDUNDANCY)? diskClause+ attribute?
;
-redundancyClause
- : HIGH
- | NORMAL
- | FLEX
- | EXTENDED (SITE siteName)?
- | EXTERNAL
- ;
diskClause
: (QUORUM | REGULAR)? (FAILGROUP diskgroupName)? DISK qualifieDiskClause (COMMA_ qualifieDiskClause)*
@@ -2552,7 +2545,7 @@ resolveClause
alterAuditPolicy
: ALTER AUDIT POLICY policyName
((ADD | DROP) subAuditClause)?
- (CONDITION (DROP | condition EVALUATE PER (STATEMENT | SESSION | INSTANCE)))?
+ (CONDITION (DROP | SQ_ condition SQ_ EVALUATE PER (STATEMENT | SESSION | INSTANCE)))?
;
subAuditClause
@@ -2781,3 +2774,258 @@ usingFunctionClause
dropBindingClause
: DROP BINDING LP_ parameterType (COMMA_ parameterType)* RP_ FORCE?
;
+
+alterDiskgroup
+ : ALTER DISKGROUP ((diskgroupName ((((addDiskClause | dropDiskClause) (COMMA_ (addDiskClause | dropDiskClause))* | resizeDiskClause) (rebalanceDiskgroupClause)?)
+ | replaceDiskClause
+ | renameDiskClause
+ | diskOnlineClause
+ | diskOfflineClause
+ | rebalanceDiskgroupClause
+ | checkDiskgroupClause
+ | diskgroupTemplateClauses
+ | diskgroupDirectoryClauses
+ | diskgroupAliasClauses
+ | diskgroupVolumeClauses
+ | diskgroupAttributes
+ | modifyDiskgroupFile
+ | dropDiskgroupFileClause
+ | convertRedundancyClause
+ | usergroupClauses
+ | userClauses
+ | filePermissionsClause
+ | fileOwnerClause
+ | scrubClause
+ | quotagroupClauses
+ | filegroupClauses))
+ | (((diskgroupName (COMMA_ diskgroupName)*) | ALL) (undropDiskClause | diskgroupAvailability | enableDisableVolume)))
+ ;
+
+addDiskClause
+ : ADD ((SITE siteName)? (QUORUM | REGULAR)? (FAILGROUP failgroupName)? DISK qualifiedDiskClause (COMMA_ qualifiedDiskClause)*)+
+ ;
+
+qualifiedDiskClause
+ : searchString (NAME diskName)? (SIZE sizeClause)? (FORCE | NOFORCE)?
+ ;
+
+dropDiskClause
+ : DROP ((QUORUM | REGULAR)? DISK diskName (FORCE | NOFORCE)? (COMMA diskName (FORCE | NOFORCE)?)*
+ | DISKS IN (QUORUM | REGULAR)? FAILGROUP failgroupName (FORCE | NOFORCE)? (COMMA_ failgroupName (FORCE | NOFORCE)?)*)
+ ;
+
+resizeDiskClause
+ : RESIZE ALL (SIZE sizeClause)?
+ ;
+
+rebalanceDiskgroupClause
+ : REBALANCE ((((WITH withPhases) | (WITHOUT withoutPhases))? (POWER INTEGER_)? (WAIT | NOWAIT)?)
+ | (MODIFY POWER (INTEGER_)?))?
+ ;
+
+withPhases
+ : withPhase (COMMA_ withPhase)*
+ ;
+
+withPhase
+ : RESTORE | BALANCE | PREPARE | COMPACT
+ ;
+
+withoutPhases
+ : withoutPhase (COMMA_ withoutPhase)*
+ ;
+
+withoutPhase
+ : BALANCE | PREPARE | COMPACT
+ ;
+
+replaceDiskClause
+ : REPLACE DISK diskName WITH pathString (FORCE | NOFORCE)?
+ (COMMA_ diskName WITH pathString (FORCE | NOFORCE)?)*
+ (POWER INTEGER_)? (WAIT | NOWAIT)?
+ ;
+
+renameDiskClause
+ : RENAME (DISK diskName TO diskName (COMMA_ diskName TO diskName)* | DISKS ALL)
+ ;
+
+diskOnlineClause
+ : ONLINE (((QUORUM | REGULAR)? DISK diskName (COMMA_ diskName)*
+ | DISKS IN (QUORUM | REGULAR)? FAILGROUP failgroupName (COMMA_ failgroupName)*)+
+ | ALL) (POWER INTEGER_)? (WAIT | NOWAIT)?
+ ;
+
+diskOfflineClause
+ : OFFLINE ((QUORUM | REGULAR)? DISK diskName (COMMA_ diskName)*
+ | DISKS IN (QUORUM | REGULAR)? FAILGROUP failgroupName (COMMA_ failgroupName)*)+ (timeoutClause)?
+ ;
+
+timeoutClause
+ : DROP AFTER INTEGER_ (M | H)
+ ;
+
+checkDiskgroupClause
+ : CHECK (REPAIR | NOREPAIR)?
+ ;
+
+diskgroupTemplateClauses
+ : (((ADD | MODIFY) TEMPLATE templateName qualifiedTemplateClause (COMMA_ templateName qualifiedTemplateClause)*)
+ | (DROP TEMPLATE templateName (COMMA_ templateName)*))
+ ;
+
+qualifiedTemplateClause
+ : ATTRIBUTE LP_ redundancyClause stripingClause diskRegionClause RP_
+ ;
+
+redundancyClause
+ : (MIRROR | HIGH | UNPROTECTED | PARITY)?
+ ;
+
+stripingClause
+ : (FINE | COARSE)?
+ ;
+
+diskRegionClause
+ : (HOT | COLD)? (MIRRORHOT | MIRRORCOLD)?
+ ;
+
+diskgroupDirectoryClauses
+ : (ADD DIRECTORY fileName (COMMA_ fileName)*
+ | DROP DIRECTORY fileName (FORCE | NOFORCE)? (COMMA_ fileName (FORCE | NOFORCE)?)*
+ | RENAME DIRECTORY directoryName TO directoryName (COMMA_ directoryName TO directoryName)*)
+ ;
+
+diskgroupAliasClauses
+ : ((ADD ALIAS aliasName FOR fileName (COMMA_ aliasName FOR fileName)*)
+ | (DROP ALIAS aliasName (COMMA_ aliasName)*)
+ | (RENAME ALIAS aliasName TO aliasName (COMMA_ aliasName TO aliasName)*))
+ ;
+
+diskgroupVolumeClauses
+ : (addVolumeClause
+ | modifyVolumeClause
+ | RESIZE VOLUME asmVolumeName SIZE sizeClause
+ | DROP VOLUME asmVolumeName)
+ ;
+
+addVolumeClause
+ : ADD VOLUME asmVolumeName SIZE sizeClause (redundancyClause)? (STRIPE_WIDTH INTEGER_ (K | M))? (STRIPE_COLUMNS INTEGER_)? (ATTRIBUTE (diskRegionClause))?
+ ;
+
+modifyVolumeClause
+ : MODIFY VOLUME asmVolumeName (ATTRIBUTE (diskRegionClause))? (MOUNTPATH mountpathName)? (USAGE usageName)?
+ ;
+
+diskgroupAttributes
+ : SET ATTRIBUTE attributeNameAndValue
+ ;
+
+modifyDiskgroupFile
+ : MODIFY FILE fileName ATTRIBUTE LP_ diskRegionClause RP_ (COMMA_ fileName ATTRIBUTE ( diskRegionClause ))*
+ ;
+
+dropDiskgroupFileClause
+ : DROP FILE fileName (COMMA_ fileName)*
+ ;
+
+convertRedundancyClause
+ : CONVERT REDUNDANCY TO FLEX
+ ;
+
+usergroupClauses
+ : (ADD USERGROUP SQ_ usergroupName SQ_ WITH MEMBER SQ_ username SQ_ (COMMA_ SQ_ username SQ_)*
+ | MODIFY USERGROUP SQ_ usergroupName SQ_ (ADD | DROP) MEMBER SQ_ username SQ_ (COMMA_ SQ_ username SQ_)*
+ | DROP USERGROUP SQ_ usergroupName SQ_)
+ ;
+
+userClauses
+ : (ADD USER SQ_ username SQ_ (COMMA_ SQ_ username SQ_)*
+ | DROP USER SQ_ username SQ_ (COMMA_ SQ_ username SQ_)* (CASCADE)?
+ | REPLACE USER SQ_ username SQ_ WITH SQ_ username SQ_ (COMMA_ SQ_ username SQ_ WITH SQ_ username SQ_)*)
+ ;
+
+filePermissionsClause
+ : SET PERMISSION (OWNER | GROUP | OTHER) EQ_ (NONE | READ ONLY | READ WRITE) (COMMA_ (OWNER | GROUP | OTHER | ALL)
+ EQ_ (NONE | READ ONLY | READ WRITE))* FOR FILE fileName (COMMA_ fileName)*
+ ;
+
+fileOwnerClause
+ : SET OWNERSHIP (setOwnerClause (COMMA_ setOwnerClause)*) FOR FILE fileName (COMMA_ fileName)*
+ ;
+
+setOwnerClause
+ :OWNER EQ_ SQ_ username SQ_ | GROUP EQ_ SQ_ usergroupName SQ_
+ ;
+
+scrubClause
+ : SCRUB (FILE asmFileName | DISK diskName)? (REPAIR | NOREPAIR)?
+ (POWER (AUTO | LOW | HIGH | MAX))? (WAIT | NOWAIT)? (FORCE | NOFORCE)? (STOP)?
+ ;
+
+quotagroupClauses
+ : (ADD QUOTAGROUP quotagroupName (setPropertyClause)?
+ | MODIFY QUOTAGROUP quotagroupName setPropertyClause
+ | MOVE FILEGROUP filegroupName TO quotagroupName
+ | DROP QUOTAGROUP quotagroupName)
+ ;
+
+setPropertyClause
+ : SET propertyName EQ_ propertyValue
+ ;
+
+quotagroupName
+ : identifier
+ ;
+
+propertyName
+ : QUOTA
+ ;
+
+propertyValue
+ : sizeClause | UNLIMITED
+ ;
+
+filegroupName
+ : identifier
+ ;
+
+filegroupClauses
+ : (addFilegroupClause
+ | modifyFilegroupClause
+ | moveToFilegroupClause
+ | dropFilegroupClause)
+ ;
+
+addFilegroupClause
+ : ADD FILEGROUP filegroupName (DATABASE databaseName
+ | CLUSTER clusterName
+ | VOLUME asmVolumeName) (setFileTypePropertyclause)?
+ ;
+
+setFileTypePropertyclause
+ :SET SQ_ (fileType DOT_)? propertyName SQ_ EQ_ SQ_ propertyValue SQ_
+ ;
+
+modifyFilegroupClause
+ : MODIFY FILEGROUP filegroupName setFileTypePropertyclause
+ ;
+
+moveToFilegroupClause
+ : MOVE FILE asmFileName TO FILEGROUP filegroupName
+ ;
+
+dropFilegroupClause
+ : DROP FILEGROUP filegroupName (CASCADE)?
+ ;
+
+undropDiskClause
+ : UNDROP DISKS
+ ;
+
+diskgroupAvailability
+ : ((MOUNT (RESTRICTED | NORMAL)? (FORCE | NOFORCE)?) | (DISMOUNT (FORCE | NOFORCE)?))
+ ;
+
+enableDisableVolume
+ : (ENABLE | DISABLE) VOLUME (asmVolumeName (COMMA_ asmVolumeName)* | ALL)
+ ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
index 970231b175a..eb85a0c3b2c 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/OracleKeyword.g4
@@ -2874,3 +2874,35 @@ SCAN
COMPUTE
: C O M P U T E
;
+
+UNDROP
+ : U N D R O P
+ ;
+
+DISKS
+ : D I S K S
+ ;
+
+COARSE
+ : C O A R S E
+ ;
+
+FINE
+ : F I N E
+ ;
+
+ALIAS
+ : A L I A S
+ ;
+
+SCRUB
+ : S C R U B
+ ;
+
+DISMOUNT
+ : D I S M O U N T
+ ;
+
+REBALANCE
+ : R E B A L A N C E
+ ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
index 10c8fbcf8c6..481f4879790 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
@@ -114,5 +114,6 @@ execute
| alterAuditPolicy
| alterCluster
| alterOperator
+ | alterDiskgroup
) SEMI_?
;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
index bc3eb6d75d6..d8b9abcecea 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/java/org/apache/shardingsphere/sql/parser/oracle/visitor/statement/impl/OracleDDLStatementSQLVisitor.java
@@ -32,6 +32,7 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterD
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseLinkContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDefinitionClauseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDimensionContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDiskgroupContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterFlashbackArchiveContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterInmemoryJoinGroupContext;
@@ -148,6 +149,7 @@ import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.Ora
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseLinkStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDimensionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDiskgroupStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterFlashbackArchiveStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterInmemoryJoinGroupStatement;
@@ -920,4 +922,9 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
public ASTNode visitAlterCluster(final AlterClusterContext ctx) {
return new OracleAlterClusterStatement();
}
+
+ @Override
+ public ASTNode visitAlterDiskgroup(final AlterDiskgroupContext ctx) {
+ return new OracleAlterDiskgroupStatement();
+ }
}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
index 4cabd5173f0..9ca49dc701a 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-engine/src/main/java/org/apache/shardingsphere/sql/parser/core/database/visitor/SQLVisitorRule.java
@@ -588,6 +588,8 @@ public enum SQLVisitorRule {
ALTER_CLUSTER("AlterCluster", SQLStatementType.DDL),
+ ALTER_DISKGROUP("AlterDiskgroup", SQLStatementType.DDL),
+
CURSOR("Cursor", SQLStatementType.DDL),
CLOSE("Close", SQLStatementType.DDL),
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDiskgroupStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDiskgroupStatement.java
new file mode 100644
index 00000000000..001adfa4f13
--- /dev/null
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDiskgroupStatement.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.sql.common.statement.ddl;
+
+import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
+
+/**
+ * Alter diskgroup statement.
+ */
+public abstract class AlterDiskgroupStatement extends AbstractSQLStatement implements DDLStatement {
+}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDiskgroupStatement.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDiskgroupStatement.java
new file mode 100644
index 00000000000..b7bac0f1525
--- /dev/null
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDiskgroupStatement.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
+
+import lombok.ToString;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterDiskgroupStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
+
+/**
+ * Oracle alter diskgroup statement.
+ */
+@ToString
+public final class OracleAlterDiskgroupStatement extends AlterDiskgroupStatement implements OracleStatement {
+}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
index db7e6ed9526..f934d6da3c3 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/SQLParserTestCases.java
@@ -104,6 +104,7 @@ import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterDefaultPrivilegesTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterDimensionStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterDirectoryStatementTestCase;
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterDiskgroupStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterDomainStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterExtensionStatementTestCase;
import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl.AlterFlashbackArchiveStatementTestCase;
@@ -1339,6 +1340,9 @@ public final class SQLParserTestCases {
@XmlElement(name = "alter-cluster")
private final List<AlterClusterStatementTestCase> alterClusterTestCases = new LinkedList<>();
+ @XmlElement(name = "alter-diskgroup")
+ private final List<AlterDiskgroupStatementTestCase> alterDiskgroupTestCases = new LinkedList<>();
+
@XmlElement(name = "alter-operator")
private final List<AlterOperatorStatementTestCase> alterOperatorTestCases = new LinkedList<>();
@@ -1876,6 +1880,7 @@ public final class SQLParserTestCases {
putAll(alterJavaTestCases, result);
putAll(alterAuditPolicyTestCases, result);
putAll(alterClusterTestCases, result);
+ putAll(alterDiskgroupTestCases, result);
putAll(alterOperatorTestCases, result);
putAll(createTextSearchTestCases, result);
putAll(alterTextSearchTestCases, result);
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterDiskgroupStatementTestCase.java b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterDiskgroupStatementTestCase.java
new file mode 100644
index 00000000000..b5c3add3506
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/java/org/apache/shardingsphere/test/sql/parser/parameterized/jaxb/cases/domain/statement/ddl/AlterDiskgroupStatementTestCase.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.ddl;
+
+import org.apache.shardingsphere.test.sql.parser.parameterized.jaxb.cases.domain.statement.SQLParserTestCase;
+
+/**
+ * Alter diskgroup statement test case.
+ */
+public final class AlterDiskgroupStatementTestCase extends SQLParserTestCase {
+}
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-diskgroup.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-diskgroup.xml
new file mode 100644
index 00000000000..9a81317db1c
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/case/ddl/alter-diskgroup.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<sql-parser-test-cases>
+ <alter-diskgroup sql-case-id="alter_diskgroup_add_disk" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_drop_disk" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_undrop_disk" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_resize" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_rebalance" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_verify" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_add_template" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_change_template" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_drop_template" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_create_directory" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_create_alias" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_scrub" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_dismount" />
+ <alter-diskgroup sql-case-id="alter_diskgroup_mount" />
+</sql-parser-test-cases>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-audit-policy.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-audit-policy.xml
index 88e472119bb..c12f056144d 100644
--- a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-audit-policy.xml
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-audit-policy.xml
@@ -19,5 +19,5 @@
<sql-cases>
<sql-case id="alter_audit_policy_add" value="ALTER AUDIT POLICY dml_pol ADD PRIVILEGES CREATE ANY TABLE, DROP ANY TABLE;" db-types="Oracle" />
<sql-case id="alter_audit_policy_drop" value="ALTER AUDIT POLICY table_pol DROP PRIVILEGES CREATE ANY TABLE;" db-types="Oracle" />
- <sql-case id="alter_audit_policy_modify" value="ALTER AUDIT POLICY emp_updates_pol CONDITION UID = 102 EVALUATE PER STATEMENT;" db-types="Oracle" />
+ <sql-case id="alter_audit_policy_modify" value="ALTER AUDIT POLICY emp_updates_pol CONDITION 'UID = 102' EVALUATE PER STATEMENT;" db-types="Oracle" />
</sql-cases>
diff --git a/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-diskgroup.xml b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-diskgroup.xml
new file mode 100644
index 00000000000..349185dc49e
--- /dev/null
+++ b/shardingsphere-test/shardingsphere-parser-test/src/main/resources/sql/supported/ddl/alter-diskgroup.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<sql-cases>
+ <sql-case id="alter_diskgroup_add_disk" value="ALTER DISKGROUP dgroup_01 ADD DISK '/devices/disks/d100';" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_drop_disk" value="ALTER DISKGROUP dgroup_01 DROP DISK dgroup_01_0000;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_undrop_disk" value="ALTER DISKGROUP dgroup_01 UNDROP DISKS;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_resize" value="ALTER DISKGROUP dgroup_01 RESIZE ALL SIZE 36G;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_rebalance" value="ALTER DISKGROUP dgroup_01 REBALANCE POWER 11 WAIT;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_verify" value="ALTER DISKGROUP dgroup_01 CHECK ALL REPAIR;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_add_template" value="ALTER DISKGROUP dgroup_01 ADD TEMPLATE template_01 ATTRIBUTE (UNPROTECTED COARSE);" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_change_template" value="ALTER DISKGROUP dgroup_01 MODIFY TEMPLATE template_01 ATTRIBUTE (FINE);" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_drop_template" value="ALTER DISKGROUP dgroup_01 DROP TEMPLATE template_01;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_create_directory" value="ALTER DISKGROUP dgroup_01 ADD DIRECTORY '+dgroup_01/alias_dir';" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_create_alias" value="ALTER DISKGROUP dgroup_01 ADD ALIAS '+dgroup_01/alias_dir/datafile.dbf' FOR '+dgroup_01.261.1';" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_scrub" value="ALTER DISKGROUP dgroup_01 SCRUB REPAIR WAIT;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_dismount" value="ALTER DISKGROUP dgroup_01 DISMOUNT FORCE;" db-types="Oracle" />
+ <sql-case id="alter_diskgroup_mount" value="ALTER DISKGROUP dgroup_01 MOUNT;" db-types="Oracle" />
+</sql-cases>