You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/05/05 08:53:44 UTC
[shardingsphere] branch master updated: Support alter database
grammar (#10214)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 c5aa1e1 Support alter database grammar (#10214)
c5aa1e1 is described below
commit c5aa1e1399b7165135b0bdc1603f4cd61c19e4ca
Author: Zhu jun <zh...@163.com>
AuthorDate: Wed May 5 16:53:07 2021 +0800
Support alter database grammar (#10214)
* support alter database grammar
* fix
* add testcase
* add end line
* remove unuse
* add database clause
* fix review
* trigger ci
---
.../src/main/antlr4/imports/oracle/BaseRule.g4 | 72 +++++
.../src/main/antlr4/imports/oracle/DDLStatement.g4 | 289 ++++++++++++++++++
.../src/main/antlr4/imports/oracle/Keyword.g4 | 4 +
.../main/antlr4/imports/oracle/OracleKeyword.g4 | 338 ++++++++++++++++++++-
.../sql/parser/autogen/OracleStatement.g4 | 1 +
.../impl/OracleDDLStatementSQLVisitor.java | 7 +
.../statement/ddl/AlterDatabaseStatement.java} | 46 +--
.../oracle/ddl/OracleAlterDatabaseStatement.java} | 43 +--
.../src/main/resources/case/ddl/alter-database.xml | 14 +-
.../src/main/resources/sql/supported/ddl/alter.xml | 14 +-
10 files changed, 749 insertions(+), 79 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 ca9a23f..b301b43 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
@@ -526,3 +526,75 @@ hashSubpartitionQuantity
odciParameters
: identifier
;
+
+databaseName
+ : identifier
+ ;
+
+locationName
+ : STRING_
+ ;
+
+fileName
+ : STRING_
+ ;
+
+asmFileName
+ : STRING_
+ ;
+
+fileNumber
+ : NUMBER_
+ ;
+
+instanceName
+ : STRING_
+ ;
+
+logminerSessionName
+ : identifier
+ ;
+
+tablespaceGroupName
+ : identifier
+ ;
+
+copyName
+ : identifier
+ ;
+
+mirrorName
+ : identifier
+ ;
+
+uriString
+ : identifier
+ ;
+
+qualifiedCredentialName
+ : identifier
+ ;
+
+pdbName
+ : identifier
+ ;
+
+diskgroupName
+ : identifier
+ ;
+
+templateName
+ : identifier
+ ;
+
+aliasName
+ : identifier
+ ;
+
+domain
+ : identifier
+ ;
+
+dateValue
+ : dateTimeLiterals | stringLiterals | numberLiterals | expr
+ ;
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 41a2f80..5b46e0f 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
@@ -1132,3 +1132,292 @@ rowArchivalVisibilityClause
defaultCollationClause
: DEFAULT_COLLATION EQ_ (collationName | NONE)
;
+
+alterDatabase
+ : ALTER databaseClauses
+ ( startupClauses
+ | recoveryClauses
+ | databaseFileClauses
+ | logfileClauses
+ | controlfileClauses
+ | standbyDatabaseClauses
+ | defaultSettingsClauses
+ | instanceClauses
+ | securityClause
+ | prepareClause
+ | dropMirrorCopy
+ | lostWriteProtection
+ | cdbFleetClauses
+ | propertyClause )
+ ;
+
+databaseClauses
+ : DATABASE databaseName | PLUGGABLE DATABASE pdbName
+ ;
+
+startupClauses
+ : MOUNT ((STANDBY | CLONE) DATABASE)?
+ | OPEN ((READ WRITE)? (RESETLOGS | NORESETLOGS)? (UPGRADE | DOWNGRADE)? | READ ONLY)
+ ;
+
+recoveryClauses
+ : generalRecovery | managedStandbyRecovery | BEGIN BACKUP | END BACKUP
+ ;
+
+generalRecovery
+ : RECOVER (AUTOMATIC)? (FROM locationName)? (
+ (fullDatabaseRecovery | partialDatabaseRecovery | LOGFILE fileName)
+ ((TEST | ALLOW NUMBER_ CORRUPTION | parallelClause)+)?
+ | CONTINUE DEFAULT?
+ | CANCEL
+ )
+ ;
+
+fullDatabaseRecovery
+ : STANDBY? DATABASE
+ ((UNTIL (CANCEL | TIME dateValue | CHANGE NUMBER_ | CONSISTENT)
+ | USING BACKUP CONTROLFILE
+ | SNAPSHOT TIME dateValue
+ )+)?
+ ;
+
+partialDatabaseRecovery
+ : TABLESPACE tablespaceName (COMMA_ tablespaceName)*
+ | DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+ ;
+
+managedStandbyRecovery
+ : RECOVER (MANAGED STANDBY DATABASE
+ ((USING ARCHIVED LOGFILE | DISCONNECT (FROM SESSION)?
+ | NODELAY
+ | UNTIL CHANGE NUMBER_
+ | UNTIL CONSISTENT | USING INSTANCES (ALL | NUMBER_) | parallelClause)+
+ | FINISH | CANCEL)?
+ | TO LOGICAL STANDBY (databaseName | KEEP IDENTITY))
+ ;
+
+databaseFileClauses
+ : RENAME FILE fileName (COMMA_ fileName)* TO fileName
+ | createDatafileClause
+ | alterDatafileClause
+ | alterTempfileClause
+ | moveDatafileClause
+ ;
+
+createDatafileClause
+ : CREATE DATAFILE (fileName | fileNumber) (COMMA_ (fileName | fileNumber))*
+ ( AS (fileSpecification (COMMA_ fileSpecification)* | NEW))?
+ ;
+
+fileSpecification
+ : datafileTempfileSpec | redoLogFileSpec
+ ;
+
+datafileTempfileSpec
+ : (fileName | asmFileName )? (SIZE sizeClause)? REUSE? autoextendClause?
+ ;
+
+autoextendClause
+ : AUTOEXTEND (OFF | ON (NEXT sizeClause)? maxsizeClause?)
+ ;
+
+redoLogFileSpec
+ : ((fileName | asmFileName)
+ | LP_ (fileName | asmFileName) (COMMA_ (fileName | asmFileName))* RP_)?
+ (SIZE sizeClause)? (BLOCKSIZE sizeClause)? REUSE?
+ ;
+
+alterDatafileClause
+ : DATAFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+ (ONLINE | OFFLINE (FOR DROP)? | RESIZE sizeClause | autoextendClause | END BACKUP | ENCRYPT | DECRYPT)
+ ;
+
+alterTempfileClause
+ : TEMPFILE (fileName | NUMBER_) (COMMA_ (fileName | NUMBER_))*
+ (RESIZE sizeClause | autoextendClause | DROP (INCLUDING DATAFILES)? | ONLINE | OFFLINE)
+ ;
+
+logfileClauses
+ : ((ARCHIVELOG MANUAL? | NOARCHIVELOG )
+ | NO? FORCE LOGGING
+ | SET STANDBY NOLOGGING FOR (DATA AVAILABILITY | LOAD PERFORMANCE)
+ | RENAME FILE fileName (COMMA_ fileName)* TO fileName
+ | CLEAR UNARCHIVED? LOGFILE logfileDescriptor (COMMA_ logfileDescriptor)* (UNRECOVERABLE DATAFILE)?
+ | addLogfileClauses
+ | dropLogfileClauses
+ | switchLogfileClause
+ | supplementalDbLogging)
+ ;
+
+logfileDescriptor
+ : GROUP NUMBER_ | LP_ fileName (COMMA_ fileName)* RP_ | fileName
+ ;
+
+addLogfileClauses
+ : ADD STANDBY? LOGFILE
+ (((INSTANCE instanceName)? | (THREAD SQ_ NUMBER_ SQ_)?)
+ (GROUP NUMBER_)? redoLogFileSpec (COMMA_ (GROUP NUMBER_)? redoLogFileSpec)*
+ | MEMBER fileName REUSE? (COMMA_ fileName REUSE?)* TO logfileDescriptor (COMMA_ logfileDescriptor)*)
+ ;
+
+controlfileClauses
+ : CREATE ((LOGICAL | PHYSICAL)? STANDBY | FAR SYNC INSTANCE) CONTROLFILE AS fileName REUSE?
+ | BACKUP CONTROLFILE TO (fileName REUSE? | traceFileClause)
+ ;
+
+traceFileClause
+ : TRACE (AS fileName REUSE?)? (RESETLOGS | NORESETLOGS)?
+ ;
+
+dropLogfileClauses
+ : DROP STANDBY? LOGFILE
+ (logfileDescriptor (COMMA_ logfileDescriptor)*
+ | MEMBER fileName (COMMA_ fileName)*)
+ ;
+
+switchLogfileClause
+ : SWITCH ALL LOGFILES TO BLOCKSIZE NUMBER_
+ ;
+
+supplementalDbLogging
+ : (ADD | DROP) SUPPLEMENTAL LOG
+ ( DATA
+ | supplementalIdKeyClause
+ | supplementalPlsqlClause
+ | supplementalSubsetReplicationClause)
+ ;
+
+supplementalPlsqlClause
+ : DATA FOR PROCEDURAL REPLICATION
+ ;
+
+supplementalSubsetReplicationClause
+ : DATA SUBSET DATABASE REPLICATION
+ ;
+
+standbyDatabaseClauses
+ : ((activateStandbyDbClause
+ | maximizeStandbyDbClause
+ | registerLogfileClause
+ | commitSwitchoverClause
+ | startStandbyClause
+ | stopStandbyClause
+ | convertDatabaseClause) parallelClause?)
+ | (switchoverClause | failoverClause)
+ ;
+
+activateStandbyDbClause
+ : ACTIVATE (PHYSICAL | LOGICAL)? STANDBY DATABASE (FINISH APPLY)?
+ ;
+
+maximizeStandbyDbClause
+ : SET STANDBY DATABASE TO MAXIMIZE (PROTECTION | AVAILABILITY | PERFORMANCE)
+ ;
+
+registerLogfileClause
+ : REGISTER (OR REPLACE)? (PHYSICAL | LOGICAL)? LOGFILE fileSpecification (COMMA_ fileSpecification)* (FOR logminerSessionName)?
+ ;
+
+commitSwitchoverClause
+ : (PREPARE | COMMIT) TO SWITCHOVER
+ ( TO (((PHYSICAL | LOGICAL)? PRIMARY | PHYSICAL? STANDBY) ((WITH | WITHOUT) SESSION SHUTDOWN (WAIT | NOWAIT))?
+ | LOGICAL STANDBY)
+ | CANCEL
+ )?
+ ;
+
+startStandbyClause
+ : START LOGICAL STANDBY APPLY IMMEDIATE? NODELAY? (NEW PRIMARY dbLink | INITIAL scnValue? | (SKIP_SYMBOL FAILED TRANSACTION | FINISH))?
+ ;
+
+scnValue
+ : literals
+ ;
+
+stopStandbyClause
+ : (STOP | ABORT) LOGICAL STANDBY APPLY
+ ;
+
+switchoverClause
+ : SWITCHOVER TO databaseName (VERIFY | FORCE)?
+ ;
+
+convertDatabaseClause
+ : CONVERT TO (PHYSICAL | SNAPSHOT) STANDBY
+ ;
+
+failoverClause
+ : FAILOVER TO databaseName FORCE?
+ ;
+
+defaultSettingsClauses
+ : DEFAULT EDITION EQ_ editionName
+ | SET DEFAULT (BIGFILE | SMALLFILE) TABLESPACE
+ | DEFAULT TABLESPACE tablespaceName
+ | DEFAULT LOCAL? TEMPORARY TABLESPACE (tablespaceName | tablespaceGroupName)
+ | RENAME GLOBAL_NAME TO databaseName DO_ domain (DQ_ domain)*
+ | ENABLE BLOCK CHANGE TRACKING (USING FILE fileName REUSE?)?
+ | DISABLE BLOCK CHANGE TRACKING
+ | NO? FORCE FULL DATABASE CACHING
+ | CONTAINERS DEFAULT TARGET EQ_ (LP_ containerName RP_ | NONE)
+ | flashbackModeClause
+ | undoModeClause
+ | setTimeZoneClause
+ ;
+
+setTimeZoneClause
+ : SET TIME_ZONE EQ_ SQ_ ( (PLUS_ | MINUS_) dateValue | timeZoneRegion ) SQ_
+ ;
+
+timeZoneRegion
+ : STRING_
+ ;
+
+flashbackModeClause
+ : FLASHBACK (ON | OFF)
+ ;
+
+undoModeClause
+ : LOCAL UNDO (ON | OFF)
+ ;
+
+moveDatafileClause
+ : MOVE DATAFILE LP_ (fileName | asmFileName | fileNumber) RP_
+ (TO LP_ (fileName | asmFileName) RP_ )? REUSE? KEEP?
+ ;
+
+instanceClauses
+ : (ENABLE | DISABLE) INSTANCE instanceName
+ ;
+
+securityClause
+ : GUARD (ALL | STANDBY | NONE)
+ ;
+
+prepareClause
+ : PREPARE MIRROR COPY copyName (WITH (UNPROTECTED | MIRROR | HIGH) REDUNDANCY)?
+ ;
+
+dropMirrorCopy
+ : DROP MIRROR COPY mirrorName
+ ;
+
+lostWriteProtection
+ : (ENABLE | DISABLE | REMOVE | SUSPEND)? LOST WRITE PROTECTION
+ ;
+
+cdbFleetClauses
+ : leadCdbClause | leadCdbUriClause
+ ;
+
+leadCdbClause
+ : SET LEAD_CDB EQ_ (TRUE | FALSE)
+ ;
+
+leadCdbUriClause
+ : SET LEAD_CDB_URI EQ_ uriString
+ ;
+
+propertyClause
+ : PROPERTY (SET | REMOVE) DEFAULT_CREDENTIAL EQ_ qualifiedCredentialName
+ ;
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/Keyword.g4 b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/Keyword.g4
index d9bf586..d87e9d4 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/Keyword.g4
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/imports/oracle/Keyword.g4
@@ -558,3 +558,7 @@ FLOAT
TRIGGERS
: T R I G G E R S
;
+
+GLOBAL_NAME
+ : G L O B A L UL_ N A M E
+ ;
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 0cc43af..950cb16 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
@@ -1430,7 +1430,7 @@ INDEXES
SUPPLEMENTAL
: S U P P L E M E N T A L
;
-
+
ADVISE
: A D V I S E
;
@@ -1458,3 +1458,339 @@ ACTIVE
DEFAULT_COLLATION
: D E F A U L T UL_ C O L L A T I O N
;
+
+MOUNT
+ : M O U N T
+ ;
+
+STANDBY
+ : S T A N D B Y
+ ;
+
+CLONE
+ : C L O N E
+ ;
+
+RESETLOGS
+ : R E S E T L O G S
+ ;
+
+NORESETLOGS
+ : N O R E S E T L O G S
+ ;
+
+UPGRADE
+ : U P G R A D E
+ ;
+
+DOWNGRADE
+ : D O W N G R A D E
+ ;
+
+RECOVER
+ : R E C O V E R
+ ;
+
+LOGFILE
+ : L O G F I L E
+ ;
+
+TEST
+ : T E S T
+ ;
+
+CORRUPTION
+ : C O R R U P T I O N
+ ;
+
+CONTINUE
+ : C O N T I N U E
+ ;
+
+CANCEL
+ : C A N C E L
+ ;
+
+UNTIL
+ : U N T I L
+ ;
+
+CONTROLFILE
+ : C O N T R O L F I L E
+ ;
+
+SNAPSHOT
+ : S N A P S H O T
+ ;
+
+DATAFILE
+ : D A T A F I L E
+ ;
+
+MANAGED
+ : M A N A G E D
+ ;
+
+ARCHIVED
+ : A R C H I V E D
+ ;
+
+DISCONNECT
+ : D I S C O N N E C T
+ ;
+
+NODELAY
+ : N O D E L A Y
+ ;
+
+INSTANCES
+ : I N S T A N C E S
+ ;
+
+FINISH
+ : F I N I S H
+ ;
+
+LOGICAL
+ : L O G I C A L
+ ;
+
+FILE
+ : F I L E
+ ;
+
+SIZE
+ : S I Z E
+ ;
+
+AUTOEXTEND
+ : A U T O E X T E N D
+ ;
+
+BLOCKSIZE
+ : B L O C K S I Z E
+ ;
+
+OFFLINE
+ : O F F L I N E
+ ;
+
+RESIZE
+ : R E S I Z E
+ ;
+
+TEMPFILE
+ : T E M P F I L E
+ ;
+
+DATAFILES
+ : D A T A F I L E S
+ ;
+
+ARCHIVELOG
+ : A R C H I V E L O G
+ ;
+
+MANUAL
+ : M A N U A L
+ ;
+
+NOARCHIVELOG
+ : N O A R C H I V E L O G
+ ;
+
+AVAILABILITY
+ : A V A I L A B I L I T Y
+ ;
+
+PERFORMANCE
+ : P E R F O R M A N C E
+ ;
+
+CLEAR
+ : C L E A R
+ ;
+
+UNARCHIVED
+ : U N A R C H I V E D
+ ;
+
+UNRECOVERABLE
+ : U N R E C O V E R A B L E
+ ;
+
+THREAD
+ : T H R E A D
+ ;
+
+MEMBER
+ : M E M B E R
+ ;
+
+PHYSICAL
+ : P H Y S I C A L
+ ;
+
+FAR
+ : F A R
+ ;
+
+TRACE
+ : T R A C E
+ ;
+
+SWITCH
+ : S W I T C H
+ ;
+
+LOGFILES
+ : L O G F I L E S
+ ;
+
+PROCEDURAL
+ : P R O C E D U R A L
+ ;
+
+REPLICATION
+ : R E P L I C A T I O N
+ ;
+
+SUBSET
+ : S U B S E T
+ ;
+
+ACTIVATE
+ : A C T I V A T E
+ ;
+
+APPLY
+ : A P P L Y
+ ;
+
+MAXIMIZE
+ : M A X I M I Z E
+ ;
+
+PROTECTION
+ : P R O T E C T I O N
+ ;
+
+REGISTER
+ : R E G I S T E R
+ ;
+
+PREPARE
+ : P R E P A R E
+ ;
+
+SWITCHOVER
+ : S W I T C H O V E R
+ ;
+
+SHUTDOWN
+ : S H U T D O W N
+ ;
+
+FAILED
+ : F A I L E D
+ ;
+
+SKIP_SYMBOL
+ : S K I P
+ ;
+
+STOP
+ : S T O P
+ ;
+
+ABORT
+ : A B O R T
+ ;
+
+VERIFY
+ : V E R I F Y
+ ;
+
+CONVERT
+ : C O N V E R T
+ ;
+
+FAILOVER
+ : F A I L O V E R
+ ;
+
+BIGFILE
+ : B I G F I L E
+ ;
+
+SMALLFILE
+ : S M A L L F I L E
+ ;
+
+TRACKING
+ : T R A C K I N G
+ ;
+
+CACHING
+ : C A C H I N G
+ ;
+
+CONTAINERS
+ : C O N T A I N E R S
+ ;
+
+TARGET
+ : T A R G E T
+ ;
+
+UNDO
+ : U N D O
+ ;
+
+MOVE
+ : M O V E
+ ;
+
+MIRROR
+ : M I R R O R
+ ;
+
+COPY
+ : C O P Y
+ ;
+
+UNPROTECTED
+ : U N P R O T E C T E D
+ ;
+
+REDUNDANCY
+ : R E D U N D A N C Y
+ ;
+
+REMOVE
+ : R E M O V E
+ ;
+
+SUSPEND
+ : S U S P E N D
+ ;
+
+LOST
+ : L O S T
+ ;
+
+LEAD_CDB
+ : L E A D UL_ C D B
+ ;
+
+LEAD_CDB_URI
+ : L E A D UL_ C D B UL_ U R I
+ ;
+
+PROPERTY
+ : P R O P E R T Y
+ ;
+
+DEFAULT_CREDENTIAL
+ : D E F A U L T UL_ C R E D E N T I A L
+ ;
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 efb4fa4..4fc06b8 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
@@ -48,5 +48,6 @@ execute
| merge
| alterSynonym
| alterSession
+ | alterDatabase
) 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 8883587..c3a36f6 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
@@ -26,6 +26,7 @@ import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterD
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterIndexContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSessionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterSynonymContext;
+import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterDatabaseContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.AlterTableContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnDefinitionContext;
import org.apache.shardingsphere.sql.parser.autogen.OracleStatementParser.ColumnNameContext;
@@ -58,6 +59,7 @@ import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.Sim
import org.apache.shardingsphere.sql.parser.sql.common.value.collection.CollectionValue;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterIndexStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSessionStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterDatabaseStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterTableStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleAlterSynonymStatement;
import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl.OracleCreateIndexStatement;
@@ -301,4 +303,9 @@ public final class OracleDDLStatementSQLVisitor extends OracleStatementSQLVisito
public ASTNode visitAlterSession(final AlterSessionContext ctx) {
return new OracleAlterSessionStatement();
}
+
+ @Override
+ public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
+ return new OracleAlterDatabaseStatement();
+ }
}
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-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDatabaseStatement.java
similarity index 57%
copy from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
copy to shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDatabaseStatement.java
index efb4fa4..a1a2e6b 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-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/common/statement/ddl/AlterDatabaseStatement.java
@@ -15,38 +15,18 @@
* limitations under the License.
*/
-grammar OracleStatement;
+package org.apache.shardingsphere.sql.parser.sql.common.statement.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement, DCLStatement, StoreProcedure;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.AbstractSQLStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createTable
- | alterTable
- | dropTable
- | truncateTable
- | createIndex
- | dropIndex
- | alterIndex
- | commit
- | rollback
- | setTransaction
- | savepoint
- | grant
- | revoke
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | setRole
- | call
- | merge
- | alterSynonym
- | alterSession
- ) SEMI_?
- ;
+/**
+ * Alter Database statement.
+ */
+@Getter
+@Setter
+@ToString
+public abstract class AlterDatabaseStatement extends AbstractSQLStatement implements DDLStatement {
+}
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-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDatabaseStatement.java
similarity index 57%
copy from shardingsphere-sql-parser/shardingsphere-sql-parser-dialect/shardingsphere-sql-parser-oracle/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/OracleStatement.g4
copy to shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDatabaseStatement.java
index efb4fa4..4108fdb 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-statement/src/main/java/org/apache/shardingsphere/sql/parser/sql/dialect/statement/oracle/ddl/OracleAlterDatabaseStatement.java
@@ -15,38 +15,15 @@
* limitations under the License.
*/
-grammar OracleStatement;
+package org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.ddl;
-import Symbol, Comments, DMLStatement, DDLStatement, TCLStatement, DCLStatement, StoreProcedure;
+import lombok.ToString;
+import org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.AlterDatabaseStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.OracleStatement;
-execute
- : (select
- | insert
- | update
- | delete
- | createTable
- | alterTable
- | dropTable
- | truncateTable
- | createIndex
- | dropIndex
- | alterIndex
- | commit
- | rollback
- | setTransaction
- | savepoint
- | grant
- | revoke
- | createUser
- | dropUser
- | alterUser
- | createRole
- | dropRole
- | alterRole
- | setRole
- | call
- | merge
- | alterSynonym
- | alterSession
- ) SEMI_?
- ;
+/**
+ * Oracle alter database statement.
+ */
+@ToString
+public class OracleAlterDatabaseStatement extends AlterDatabaseStatement implements OracleStatement {
+}
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-database.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-database.xml
index 018a2d3..14fad0b 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-database.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/case/ddl/alter-database.xml
@@ -17,10 +17,12 @@
-->
<sql-parser-test-cases>
-<!-- <alter-database sql-case-id="alter_database_set_to" />-->
-<!-- <alter-database sql-case-id="alter_database_set_to_default" />-->
-<!-- <alter-database sql-case-id="alter_database_set_equal" />-->
-<!-- <alter-database sql-case-id="alter_database_reset_all" />-->
-<!-- <alter-database sql-case-id="alter_database_reset_param" />-->
-<!-- <alter-database sql-case-id="alter_database_owner" />-->
+ <alter-database sql-case-id="alter_database_mount" />
+ <alter-database sql-case-id="alter_database_open" />
+ <alter-database sql-case-id="alter_database_recovery1" />
+ <alter-database sql-case-id="alter_database_recovery2" />
+ <alter-database sql-case-id="alter_database_rename" />
+ <alter-database sql-case-id="alter_database_create1" />
+ <alter-database sql-case-id="alter_database_create2" />
+ <alter-database sql-case-id="alter_database_create3" />
</sql-parser-test-cases>
diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
index ae64a97..bd0e7d1 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-test/src/main/resources/sql/supported/ddl/alter.xml
@@ -160,12 +160,14 @@
<sql-case id="alter_function_reset" value="ALTER FUNCTION check_password(text) RESET search_path" db-types="PostgreSQL" />
<sql-case id="alter_function_depend_on" value="ALTER FUNCTION sqrt(integer) DEPENDS ON EXTENSION mathlib" db-types="PostgreSQL" />
<!--alter database test-->
-<!-- <sql-case id="alter_database_set_to" value="ALTER DATABASE test SET enable_indexscan TO off" db-types="PostgreSQL" />-->
-<!-- <sql-case id="alter_database_set_to_default" value="ALTER DATABASE test SET enable_indexscan TO DEFAULT" db-types="PostgreSQL" />-->
-<!-- <sql-case id="alter_database_set_equal" value="ALTER DATABASE test SET enable_indexscan = off" db-types="PostgreSQL" />-->
-<!-- <sql-case id="alter_database_reset_all" value="ALTER DATABASE test RESET ALL" db-types="PostgreSQL" />-->
-<!-- <sql-case id="alter_database_reset_param" value="ALTER DATABASE test RESET parameter1" db-types="PostgreSQL" />-->
-<!-- <sql-case id="alter_database_owner" value="ALTER DATABASE name OWNER TO user1" db-types="PostgreSQL" />-->
+ <sql-case id="alter_database_mount" value="ALTER DATABASE db1 MOUNT" db-types="Oracle" />
+ <sql-case id="alter_database_open" value="ALTER DATABASE db1 OPEN READONLY" db-types="Oracle" />
+ <sql-case id="alter_database_recovery1" value="ALTER DATABASE db1 BEGIN BACKUP" db-types="Oracle" />
+ <sql-case id="alter_database_recovery2" value="ALTER DATABASE db1 END BACKUP" db-types="Oracle" />
+ <sql-case id="alter_database_rename" value="ALTER DATABASE db1 RENAME FILE 'a.dbf' to 'b.dbf'" db-types="Oracle" />
+ <sql-case id="alter_database_create1" value="ALTER DATABASE db1 CREATE DATAFILE '01.dbf' as '01.dbf'" db-types="Oracle" />
+ <sql-case id="alter_database_create2" value="ALTER DATABASE db1 CREATE DATAFILE 2 as '02.dbf'" db-types="Oracle" />
+ <sql-case id="alter_database_create3" value="ALTER DATABASE db1 CREATE DATAFILE '03.dbf' as NEW" db-types="Oracle" />
<!--alter procedure test-->
<sql-case id="alter_procedure_rename" value="ALTER PROCEDURE insert_data(integer, integer) RENAME TO insert_record" db-types="PostgreSQL" />
<sql-case id="alter_procedure_owner" value="ALTER PROCEDURE insert_data(integer, integer) OWNER TO joe" db-types="PostgreSQL" />