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 29ba38b907f Support for the ALTER VIEW statement and the CREATE 
ENCRYPTKEY statement and the ALTER DATABASE statement (#37585)
29ba38b907f is described below

commit 29ba38b907f98ca0718ef2c03aa266e23f6ec7ed
Author: cxy <[email protected]>
AuthorDate: Wed Dec 31 09:35:23 2025 +0800

    Support for the ALTER VIEW statement and the CREATE ENCRYPTKEY statement 
and the ALTER DATABASE statement (#37585)
    
    * Support for the ALTER VIEW statement and the CREATE ENCRYPTKEY statement 
and the ALTER DATABASE statement
    
    * Support for the ALTER VIEW statement and the CREATE ENCRYPTKEY statement 
and the ALTER DATABASE statement
    
    * Support for the ALTER VIEW statement and the CREATE ENCRYPTKEY statement 
and the ALTER DATABASE statement
---
 .../core/database/visitor/SQLVisitorRule.java      |  2 +
 .../src/main/antlr4/imports/doris/BaseRule.g4      | 13 ++++
 .../src/main/antlr4/imports/doris/DDLStatement.g4  |  9 ++-
 .../src/main/antlr4/imports/doris/DorisKeyword.g4  |  4 +
 .../sql/parser/autogen/DorisStatement.g4           |  1 +
 .../visitor/statement/DorisStatementVisitor.java   | 19 +++++
 .../statement/type/DorisDDLStatementVisitor.java   | 47 ++++++++++-
 .../ddl/view/ViewColumnSegment.java}               | 33 ++++++--
 .../CreateEncryptKeyStatement.java}                |  8 +-
 .../type/ddl/database/AlterDatabaseStatement.java  | 44 +++++++++++
 .../type/ddl/view/AlterViewStatement.java          |  5 ++
 .../ddl/standard/StandardDDLStatementAssert.java   |  8 ++
 .../type/AlterDatabaseStatementAssert.java         | 91 ++++++++++++++++++++++
 .../standard/type/AlterViewStatementAssert.java    | 23 ++++++
 .../cases/parser/jaxb/RootSQLParserTestCases.java  |  4 +
 .../impl/column/ExpectedViewColumn.java}           | 17 +++-
 ...java => CreateEncryptKeyStatementTestCase.java} | 15 +++-
 .../database/AlterDatabaseStatementTestCase.java   | 25 ++++++
 .../standard/view/AlterViewStatementTestCase.java  |  6 ++
 .../src/main/resources/case/ddl/alter-database.xml |  8 ++
 .../src/main/resources/case/ddl/alter-view.xml     | 22 ++++++
 .../main/resources/case/ddl/create-encryptkey.xml  | 22 ++++++
 .../resources/sql/supported/ddl/alter-database.xml |  5 ++
 .../resources/sql/supported/ddl/alter-view.xml     |  1 +
 .../sql/supported/ddl/create-encryptkey.xml        | 22 ++++++
 25 files changed, 434 insertions(+), 20 deletions(-)

diff --git 
a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
 
b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
index 52b38806f69..f9008ca841a 100644
--- 
a/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
+++ 
b/parser/sql/engine/core/src/main/java/org/apache/shardingsphere/sql/parser/engine/core/database/visitor/SQLVisitorRule.java
@@ -715,6 +715,8 @@ public enum SQLVisitorRule {
     
     DROP_ENCRYPT_KEY("DropEncryptKey", SQLStatementType.DDL),
     
+    CREATE_ENCRYPT_KEY("CreateEncryptKey", SQLStatementType.DDL),
+    
     SYSTEM_ACTION("SystemAction", SQLStatementType.DDL),
     
     EMPTY_STATEMENT("EmptyStatement", SQLStatementType.DAL),
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
index 47e75d540f1..2f2779fa6d1 100644
--- a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
+++ b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/BaseRule.g4
@@ -405,6 +405,7 @@ identifierKeywordsUnambiguous
     | QUARTER
     | QUERY
     | QUICK
+    | QUOTA
     | RANDOM
     | RANK
     | READ_ONLY
@@ -764,6 +765,18 @@ viewName
     : (owner DOT_)? identifier
     ;
 
+viewColumnDefinition
+    : columnName (COMMENT string_)?
+    ;
+
+viewColumnDefinitions
+    : viewColumnDefinition (COMMA_ viewColumnDefinition)*
+    ;
+
+encryptKeyName
+    : (owner DOT_)? identifier
+    ;
+
 owner
     : identifier
     ;
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
index 6d9d00b989d..0cd362ab37e 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DDLStatement.g4
@@ -261,6 +261,9 @@ createDatabase
 
 alterDatabase
     : ALTER (DATABASE | SCHEMA) databaseName? alterDatabaseSpecification_*
+    | ALTER (DATABASE | SCHEMA) databaseName RENAME identifier
+    | ALTER (DATABASE | SCHEMA) databaseName SET (DATA | REPLICA | 
TRANSACTION) QUOTA NUMBER_
+    | ALTER (DATABASE | SCHEMA) databaseName SET PROPERTIES LP_ properties RP_
     ;
 
 createDatabaseSpecification_
@@ -371,6 +374,10 @@ dropServer
     : DROP SERVER ifExists? serverName
     ;
 
+createEncryptKey
+    : CREATE ENCRYPTKEY encryptKeyName AS string_
+    ;
+
 dropEncryptKey
     : DROP ENCRYPTKEY identifier
     ;
@@ -419,7 +426,7 @@ alterView
     : ALTER (ALGORITHM EQ_ (UNDEFINED | MERGE | TEMPTABLE))?
       ownerStatement?
       (SQL SECURITY (DEFINER | INVOKER))?
-      VIEW viewName (LP_ columnNames RP_)?
+      VIEW viewName (LP_ (columnNames | viewColumnDefinitions) RP_)?
       AS select
       (WITH (CASCADED | LOCAL)? CHECK OPTION)?
     ;
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
index 447347830c6..7a9a193bcc5 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/imports/doris/DorisKeyword.g4
@@ -2052,6 +2052,10 @@ QUICK
     : Q U I C K
     ;
 
+QUOTA
+    : Q U O T A
+    ;
+
 RANDOM
     : R A N D O M
     ;
diff --git 
a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
 
b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
index b5cb0a4f144..3ea79a4502c 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
+++ 
b/parser/sql/engine/dialect/doris/src/main/antlr4/org/apache/shardingsphere/sql/parser/autogen/DorisStatement.g4
@@ -45,6 +45,7 @@ execute
     | dropLogfileGroup
     | createServer
     | dropServer
+    | createEncryptKey
     | dropEncryptKey
     | createView
     | dropView
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
index b64ba91cec6..b2bf8dc4cfd 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
@@ -156,6 +156,9 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ViewNam
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WeightStringFunctionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WhereClauseContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.WithClauseContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ViewColumnDefinitionContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ViewColumnDefinitionsContext;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.view.ViewColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.outfile.OutfileColumnsSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.outfile.OutfileLinesSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.outfile.OutfileSegment;
@@ -429,6 +432,22 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
         return result;
     }
     
+    @Override
+    public final ASTNode visitViewColumnDefinition(final 
ViewColumnDefinitionContext ctx) {
+        ColumnSegment column = (ColumnSegment) visit(ctx.columnName());
+        String comment = null != ctx.COMMENT() ? 
SQLUtils.getExactlyValue(ctx.string_().getText()) : null;
+        return new ViewColumnSegment(ctx.getStart().getStartIndex(), 
ctx.getStop().getStopIndex(), column, comment);
+    }
+    
+    @Override
+    public final ASTNode visitViewColumnDefinitions(final 
ViewColumnDefinitionsContext ctx) {
+        CollectionValue<ViewColumnSegment> result = new CollectionValue<>();
+        for (ViewColumnDefinitionContext each : ctx.viewColumnDefinition()) {
+            result.getValue().add((ViewColumnSegment) visit(each));
+        }
+        return result;
+    }
+    
     @Override
     public final ASTNode visitExpr(final ExprContext ctx) {
         if (null != ctx.booleanPrimary()) {
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
index 297458a7722..28097d37cc6 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/type/DorisDDLStatementVisitor.java
@@ -116,6 +116,7 @@ import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.RenameR
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.RenamePartitionContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AlterStoragePolicyContext;
 import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PropertiesClauseContext;
+import 
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateEncryptKeyContext;
 import 
org.apache.shardingsphere.sql.parser.engine.doris.visitor.statement.DorisStatementVisitor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.enums.AlgorithmOption;
 import 
org.apache.shardingsphere.sql.parser.statement.core.enums.LockTableOption;
@@ -157,6 +158,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.Cre
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.LockTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.RenameTableDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.tablespace.TablespaceSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.view.ViewColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.simple.SimpleExpressionSegment;
@@ -165,6 +167,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.DataT
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.SQLStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.ddl.CreateEncryptKeyStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DeallocateStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.ExecuteStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.PrepareStatement;
@@ -244,6 +247,16 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     public ASTNode visitAlterView(final AlterViewContext ctx) {
         AlterViewStatement result = new AlterViewStatement(getDatabaseType());
         result.setView((SimpleTableSegment) visit(ctx.viewName()));
+        if (null != ctx.columnNames()) {
+            CollectionValue<ColumnSegment> columns = 
(CollectionValue<ColumnSegment>) visit(ctx.columnNames());
+            for (ColumnSegment each : columns.getValue()) {
+                result.getColumns().add(new 
ViewColumnSegment(each.getStartIndex(), each.getStopIndex(), each, null));
+            }
+        }
+        if (null != ctx.viewColumnDefinitions()) {
+            CollectionValue<ViewColumnSegment> columns = 
(CollectionValue<ViewColumnSegment>) visit(ctx.viewColumnDefinitions());
+            result.getColumns().addAll(columns.getValue());
+        }
         result.setViewDefinition(getOriginalText(ctx.select()));
         result.setSelect((SelectStatement) visit(ctx.select()));
         return result;
@@ -265,7 +278,34 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     
     @Override
     public ASTNode visitAlterDatabase(final AlterDatabaseContext ctx) {
-        return new AlterDatabaseStatement(getDatabaseType());
+        AlterDatabaseStatement result = new 
AlterDatabaseStatement(getDatabaseType());
+        if (null != ctx.databaseName()) {
+            result.setDatabaseName(new 
IdentifierValue(ctx.databaseName().getText()).getValue());
+        }
+        if (null != ctx.RENAME() && null != ctx.identifier()) {
+            result.setRenameDatabaseName(new 
IdentifierValue(ctx.identifier().getText()).getValue());
+        }
+        if (null != ctx.QUOTA() && null != ctx.NUMBER_()) {
+            if (null != ctx.DATA()) {
+                result.setQuotaType("DATA");
+            } else if (null != ctx.REPLICA()) {
+                result.setQuotaType("REPLICA");
+            } else if (null != ctx.TRANSACTION()) {
+                result.setQuotaType("TRANSACTION");
+            }
+            result.setQuotaValue(Long.parseLong(ctx.NUMBER_().getText()));
+        }
+        if (null != ctx.PROPERTIES() && null != ctx.properties()) {
+            PropertiesSegment propertiesSegment = new 
PropertiesSegment(ctx.properties().getStart().getStartIndex(), 
ctx.properties().getStop().getStopIndex());
+            for (int i = 0; i < ctx.properties().property().size(); i++) {
+                String key = getPropertyKey(ctx.properties().property(i));
+                String value = 
SQLUtils.getExactlyValue(ctx.properties().property(i).literals().getText());
+                PropertySegment propertySegment = new 
PropertySegment(ctx.properties().property(i).getStart().getStartIndex(), 
ctx.properties().property(i).getStop().getStopIndex(), key, value);
+                propertiesSegment.getProperties().add(propertySegment);
+            }
+            result.setProperties(propertiesSegment);
+        }
+        return result;
     }
     
     @Override
@@ -1222,6 +1262,11 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
         return new CreateMaterializedViewStatement(getDatabaseType());
     }
     
+    @Override
+    public ASTNode visitCreateEncryptKey(final CreateEncryptKeyContext ctx) {
+        return new CreateEncryptKeyStatement(getDatabaseType());
+    }
+    
     @Override
     public ASTNode visitDropEncryptKey(final DropEncryptKeyContext ctx) {
         return new DropEncryptKeyStatement(getDatabaseType());
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/view/ViewColumnSegment.java
similarity index 51%
copy from 
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
copy to 
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/view/ViewColumnSegment.java
index 4e876297c54..a839717cd48 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/view/ViewColumnSegment.java
@@ -15,17 +15,36 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database;
+package org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.view;
 
-import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
-import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+import org.apache.shardingsphere.sql.parser.statement.core.segment.SQLSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
+
+import java.util.Optional;
 
 /**
- * Alter database statement.
+ * View column segment.
  */
-public final class AlterDatabaseStatement extends DDLStatement {
+@RequiredArgsConstructor
+@Getter
+public final class ViewColumnSegment implements SQLSegment {
+    
+    private final int startIndex;
+    
+    private final int stopIndex;
+    
+    private final ColumnSegment column;
+    
+    private final String comment;
     
-    public AlterDatabaseStatement(final DatabaseType databaseType) {
-        super(databaseType);
+    /**
+     * Get comment.
+     *
+     * @return comment
+     */
+    public Optional<String> getComment() {
+        return Optional.ofNullable(comment);
     }
 }
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateEncryptKeyStatement.java
similarity index 85%
copy from 
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
copy to 
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateEncryptKeyStatement.java
index 4e876297c54..6fc32e3f08d 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/ddl/CreateEncryptKeyStatement.java
@@ -15,17 +15,17 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database;
+package org.apache.shardingsphere.sql.parser.statement.core.statement.ddl;
 
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 
 /**
- * Alter database statement.
+ * Create encrypt key statement.
  */
-public final class AlterDatabaseStatement extends DDLStatement {
+public final class CreateEncryptKeyStatement extends DDLStatement {
     
-    public AlterDatabaseStatement(final DatabaseType databaseType) {
+    public CreateEncryptKeyStatement(final DatabaseType databaseType) {
         super(databaseType);
     }
 }
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
index 4e876297c54..c07ed727ffa 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/database/AlterDatabaseStatement.java
@@ -17,15 +17,59 @@
 
 package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database;
 
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 
+import java.util.Optional;
+
 /**
  * Alter database statement.
  */
+@Getter
+@Setter
 public final class AlterDatabaseStatement extends DDLStatement {
     
+    private String databaseName;
+    
+    private String renameDatabaseName;
+    
+    private String quotaType;
+    
+    private Long quotaValue;
+    
+    private PropertiesSegment properties;
+    
     public AlterDatabaseStatement(final DatabaseType databaseType) {
         super(databaseType);
     }
+    
+    /**
+     * Get rename database name.
+     *
+     * @return rename database name
+     */
+    public Optional<String> getRenameDatabaseName() {
+        return Optional.ofNullable(renameDatabaseName);
+    }
+    
+    /**
+     * Get quota type.
+     *
+     * @return quota type
+     */
+    public Optional<String> getQuotaType() {
+        return Optional.ofNullable(quotaType);
+    }
+    
+    /**
+     * Get quota value.
+     *
+     * @return quota value
+     */
+    public Optional<Long> getQuotaValue() {
+        return Optional.ofNullable(quotaValue);
+    }
 }
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/view/AlterViewStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/view/AlterViewStatement.java
index 9484d654e59..3ae2824c5df 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/view/AlterViewStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/view/AlterViewStatement.java
@@ -21,10 +21,13 @@ import lombok.Getter;
 import lombok.Setter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.view.ViewColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml.SelectStatement;
 
+import java.util.LinkedList;
+import java.util.List;
 import java.util.Optional;
 
 /**
@@ -44,6 +47,8 @@ public final class AlterViewStatement extends DDLStatement {
     
     private String viewDefinition;
     
+    private List<ViewColumnSegment> columns = new LinkedList<>();
+    
     public AlterViewStatement(final DatabaseType databaseType) {
         super(databaseType);
     }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/StandardDDLStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/StandardDDLStatementAssert.java
index dc6b8d3d397..ff02c5b1f30 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/StandardDDLStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/StandardDDLStatementAssert.java
@@ -27,6 +27,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.Fe
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.MoveStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.TruncateStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.catalog.AlterCatalogStatement;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.AlterDatabaseStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.AlterIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.CreateIndexStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.DropIndexStatement;
@@ -43,6 +44,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.vi
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.DropViewStatement;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.RefreshMatViewStmtStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.oracle.database.OracleAlterPluggableDatabaseStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.AlterCatalogStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.AlterIndexStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.AlterSynonymStatementAssert;
@@ -65,6 +67,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.d
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.RefreshMatViewStmtStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.RenameTableStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.TruncateStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.ddl.standard.type.AlterDatabaseStatementAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.CloseStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.CommentStatementTestCase;
@@ -73,6 +76,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.MoveStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.TruncateStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.catalog.AlterCatalogStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.database.AlterDatabaseStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.index.AlterIndexStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.index.CreateIndexStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.index.DropIndexStatementTestCase;
@@ -147,6 +151,10 @@ public final class StandardDDLStatementAssert {
             CreateProcedureStatementAssert.assertIs(assertContext, 
(CreateProcedureStatement) actual, (CreateProcedureTestCase) expected);
         } else if (actual instanceof AlterCatalogStatement) {
             AlterCatalogStatementAssert.assertIs(assertContext, 
(AlterCatalogStatement) actual, (AlterCatalogStatementTestCase) expected);
+        } else if (actual instanceof AlterDatabaseStatement) {
+            if (!(expected instanceof 
OracleAlterPluggableDatabaseStatementTestCase)) {
+                AlterDatabaseStatementAssert.assertIs(assertContext, 
(AlterDatabaseStatement) actual, (AlterDatabaseStatementTestCase) expected);
+            }
         }
     }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterDatabaseStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterDatabaseStatementAssert.java
new file mode 100644
index 00000000000..3e2c4f0769c
--- /dev/null
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterDatabaseStatementAssert.java
@@ -0,0 +1,91 @@
+/*
+ * 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.it.sql.parser.internal.asserts.statement.ddl.standard.type;
+
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertySegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.database.AlterDatabaseStatement;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.PropertyTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.database.AlterDatabaseStatementTestCase;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+/**
+ * Alter database statement assert.
+ */
+@NoArgsConstructor(access = AccessLevel.PRIVATE)
+public final class AlterDatabaseStatementAssert {
+    
+    /**
+     * Assert alter database statement is correct with expected parser result.
+     *
+     * @param assertContext assert context
+     * @param actual actual alter database statement
+     * @param expected expected alter database statement test case
+     */
+    public static void assertIs(final SQLCaseAssertContext assertContext, 
final AlterDatabaseStatement actual, final AlterDatabaseStatementTestCase 
expected) {
+        assertDatabaseName(assertContext, actual, expected);
+        assertRenameDatabaseName(assertContext, actual, expected);
+        assertQuota(assertContext, actual, expected);
+        assertProperties(assertContext, actual, expected);
+    }
+    
+    private static void assertDatabaseName(final SQLCaseAssertContext 
assertContext, final AlterDatabaseStatement actual, final 
AlterDatabaseStatementTestCase expected) {
+        if (null != expected.getDatabaseName()) {
+            assertNotNull(actual.getDatabaseName(), 
assertContext.getText("Database name should not be null"));
+            assertThat(assertContext.getText("Database name does not match: 
"), actual.getDatabaseName(), is(expected.getDatabaseName()));
+        }
+    }
+    
+    private static void assertRenameDatabaseName(final SQLCaseAssertContext 
assertContext, final AlterDatabaseStatement actual, final 
AlterDatabaseStatementTestCase expected) {
+        if (null != expected.getRenameDatabaseName()) {
+            assertThat(assertContext.getText("Rename database name does not 
match: "), actual.getRenameDatabaseName().orElse(null), 
is(expected.getRenameDatabaseName()));
+        }
+    }
+    
+    private static void assertQuota(final SQLCaseAssertContext assertContext, 
final AlterDatabaseStatement actual, final AlterDatabaseStatementTestCase 
expected) {
+        if (null != expected.getQuotaType()) {
+            assertThat(assertContext.getText("Quota type does not match: "), 
actual.getQuotaType().orElse(null), is(expected.getQuotaType()));
+        }
+        if (null != expected.getQuotaValue()) {
+            assertThat(assertContext.getText("Quota value does not match: "), 
actual.getQuotaValue().orElse(null), is(expected.getQuotaValue()));
+        }
+    }
+    
+    private static void assertProperties(final SQLCaseAssertContext 
assertContext, final AlterDatabaseStatement actual, final 
AlterDatabaseStatementTestCase expected) {
+        if (expected.getProperties().isEmpty()) {
+            return;
+        }
+        assertNotNull(actual.getProperties(), 
assertContext.getText("Properties should not be null"));
+        assertThat(assertContext.getText("Properties size does not match: "), 
actual.getProperties().getProperties().size(), 
is(expected.getProperties().size()));
+        for (int i = 0; i < expected.getProperties().size(); i++) {
+            assertProperty(assertContext, 
actual.getProperties().getProperties().get(i), expected.getProperties().get(i));
+        }
+    }
+    
+    private static void assertProperty(final SQLCaseAssertContext 
assertContext, final PropertySegment actual, final PropertyTestCase expected) {
+        assertThat(assertContext.getText(String.format("Property key '%s' 
assertion error: ", expected.getKey())), actual.getKey(), 
is(expected.getKey()));
+        assertThat(assertContext.getText(String.format("Property value for key 
'%s' assertion error: ", expected.getKey())), actual.getValue(), 
is(expected.getValue()));
+        SQLSegmentAssert.assertIs(assertContext, actual, expected);
+    }
+}
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterViewStatementAssert.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterViewStatementAssert.java
index 8d0038e0a9b..be5f6475de5 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterViewStatementAssert.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterViewStatementAssert.java
@@ -20,11 +20,15 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.ConstraintDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.view.ViewColumnSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.view.AlterViewStatement;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.SQLCaseAssertContext;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.SQLSegmentAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.definition.ConstraintDefinitionAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.identifier.IdentifierValueAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.table.TableAssert;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.statement.dml.standard.type.SelectStatementAssert;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedViewColumn;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.view.AlterViewStatementTestCase;
 
 import java.util.Optional;
@@ -52,6 +56,7 @@ public final class AlterViewStatementAssert {
         assertViewDefinition(assertContext, actual, expected);
         assertSelect(assertContext, actual, expected);
         assertConstraintDefinition(assertContext, actual, expected);
+        assertColumns(assertContext, actual, expected);
     }
     
     private static void assertView(final SQLCaseAssertContext assertContext, 
final AlterViewStatement actual, final AlterViewStatementTestCase expected) {
@@ -86,4 +91,22 @@ public final class AlterViewStatementAssert {
             ConstraintDefinitionAssert.assertIs(assertContext, 
constraintDefinition.get(), expected.getConstraintDefinition());
         }
     }
+    
+    private static void assertColumns(final SQLCaseAssertContext 
assertContext, final AlterViewStatement actual, final 
AlterViewStatementTestCase expected) {
+        assertThat(assertContext.getText("View columns size assertion error: 
"), actual.getColumns().size(), is(expected.getColumns().size()));
+        int count = 0;
+        for (ViewColumnSegment each : actual.getColumns()) {
+            ExpectedViewColumn expectedColumn = 
expected.getColumns().get(count);
+            IdentifierValueAssert.assertIs(assertContext, 
each.getColumn().getIdentifier(), expectedColumn, "View column");
+            SQLSegmentAssert.assertIs(assertContext, each, expectedColumn);
+            if (null != expectedColumn.getComment()) {
+                assertTrue(each.getComment().isPresent(), 
assertContext.getText(String.format("View column `%s` should have comment", 
expectedColumn.getName())));
+                assertThat(assertContext.getText(String.format("View column 
`%s` comment assertion error: ", expectedColumn.getName())),
+                        each.getComment().get(), 
is(expectedColumn.getComment()));
+            } else {
+                assertFalse(each.getComment().isPresent(), 
assertContext.getText(String.format("View column `%s` should not have comment", 
expectedColumn.getName())));
+            }
+            count++;
+        }
+    }
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
index a2f0816d557..bcdde67ac9f 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/RootSQLParserTestCases.java
@@ -24,6 +24,7 @@ import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.s
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisAlterSystemStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisCreateSqlBlockRuleStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.DorisSwitchStatementTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.CreateEncryptKeyStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisAlterStoragePolicyStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.dialect.doris.DorisResumeJobStatementTestCase;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.catalog.AlterCatalogStatementTestCase;
@@ -522,6 +523,9 @@ public final class RootSQLParserTestCases {
     @XmlElement(name = "drop-table")
     private final List<DropTableStatementTestCase> dropTableTestCases = new 
LinkedList<>();
     
+    @XmlElement(name = "create-encryptkey")
+    private final List<CreateEncryptKeyStatementTestCase> 
createEncryptKeyTestCases = new LinkedList<>();
+    
     @XmlElement(name = "drop-encryptkey")
     private final List<DropEncryptKeyStatementTestCase> 
dropEncryptKeyTestCases = new LinkedList<>();
     
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedViewColumn.java
similarity index 71%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedViewColumn.java
index 53236f72790..fb2919b08b8 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedViewColumn.java
@@ -15,12 +15,21 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.database;
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column;
 
-import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import lombok.Getter;
+import lombok.Setter;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
+
+import javax.xml.bind.annotation.XmlAttribute;
 
 /**
- * Alter database statement test case.
+ * Expected view column.
  */
-public final class AlterDatabaseStatementTestCase extends SQLParserTestCase {
+@Getter
+@Setter
+public final class ExpectedViewColumn extends 
AbstractExpectedIdentifierSQLSegment {
+    
+    @XmlAttribute
+    private String comment;
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/CreateEncryptKeyStatementTestCase.java
similarity index 74%
copy from 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
copy to 
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/CreateEncryptKeyStatementTestCase.java
index 53236f72790..2688c9659d4 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/CreateEncryptKeyStatementTestCase.java
@@ -15,12 +15,21 @@
  * limitations under the License.
  */
 
-package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.database;
+package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl;
 
+import lombok.Getter;
+import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
 
+import javax.xml.bind.annotation.XmlElement;
+
 /**
- * Alter database statement test case.
+ * Create encrypt key statement test case.
  */
-public final class AlterDatabaseStatementTestCase extends SQLParserTestCase {
+@Getter
+@Setter
+public final class CreateEncryptKeyStatementTestCase extends SQLParserTestCase 
{
+    
+    @XmlElement(name = "key-name")
+    private String keyName;
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
index 53236f72790..5d45778452c 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/database/AlterDatabaseStatementTestCase.java
@@ -17,10 +17,35 @@
 
 package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.ddl.standard.database;
 
+import lombok.Getter;
+import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dal.dialect.doris.PropertyTestCase;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
 
 /**
  * Alter database statement test case.
  */
+@Getter
+@Setter
 public final class AlterDatabaseStatementTestCase extends SQLParserTestCase {
+    
+    @XmlAttribute(name = "database-name")
+    private String databaseName;
+    
+    @XmlAttribute(name = "rename-database-name")
+    private String renameDatabaseName;
+    
+    @XmlAttribute(name = "quota-type")
+    private String quotaType;
+    
+    @XmlAttribute(name = "quota-value")
+    private Long quotaValue;
+    
+    @XmlElement(name = "property")
+    private final List<PropertyTestCase> properties = new LinkedList<>();
 }
diff --git 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/view/AlterViewStatementTestCase.java
 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/view/AlterViewStatementTestCase.java
index ebde2505e1b..73b0159d61d 100644
--- 
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/view/AlterViewStatementTestCase.java
+++ 
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/view/AlterViewStatementTestCase.java
@@ -20,12 +20,15 @@ package 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.
 import lombok.Getter;
 import lombok.Setter;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.SQLParserTestCase;
+import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedViewColumn;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedConstraintDefinition;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedSimpleTable;
 import 
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.statement.dml.standard.SelectStatementTestCase;
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
 
 /**
  * Alter view statement test case.
@@ -48,4 +51,7 @@ public final class AlterViewStatementTestCase extends 
SQLParserTestCase {
     
     @XmlElement(name = "constraint-definition")
     private ExpectedConstraintDefinition constraintDefinition;
+    
+    @XmlElement(name = "column")
+    private List<ExpectedViewColumn> columns = new LinkedList<>();
 }
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-database.xml 
b/test/it/parser/src/main/resources/case/ddl/alter-database.xml
index cd43e5c88d3..2702412a0ec 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-database.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-database.xml
@@ -98,4 +98,12 @@
     <alter-database sql-case-id="alter_database_set_managedlocation" />
     <alter-database sql-case-id="alter_schema_set_managedlocation" />
     <alter-database sql-case-id="alter_database_set_lc_messages" />
+    <alter-database sql-case-id="alter_database_set_data_quota" 
database-name="example_db" quota-type="DATA" quota-value="10995116277760" />
+    <alter-database sql-case-id="alter_database_set_replica_quota" 
database-name="test_db" quota-type="REPLICA" quota-value="1024" />
+    <alter-database sql-case-id="alter_database_set_transaction_quota" 
database-name="prod_db" quota-type="TRANSACTION" quota-value="1000" />
+    <alter-database sql-case-id="alter_database_rename_doris" 
database-name="old_db" rename-database-name="new_db" />
+    <alter-database sql-case-id="alter_database_set_properties" 
database-name="example_db">
+        <property start-index="42" stop-index="58" key="key1" value="value1" />
+        <property start-index="61" stop-index="77" key="key2" value="value2" />
+    </alter-database>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-view.xml 
b/test/it/parser/src/main/resources/case/ddl/alter-view.xml
index 016ae289292..31e9a76f9be 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-view.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-view.xml
@@ -125,4 +125,26 @@
             </from>
         </select>
     </alter-view>
+
+    <alter-view sql-case-id="alter_view_with_column_comments" 
view-definition="SELECT k1, k2 FROM example_table GROUP BY k1, k2">
+        <view name="example_view" start-index="11" stop-index="33">
+            <owner name="example_db" start-index="11" stop-index="20" />
+        </view>
+        <column name="c1" start-index="36" stop-index="56" comment="column 1" 
/>
+        <column name="c2" start-index="59" stop-index="79" comment="column 2" 
/>
+        <column name="c3" start-index="82" stop-index="102" comment="column 3" 
/>
+        <select>
+            <projections start-index="115" stop-index="120">
+                <column-projection name="k1" start-index="115" 
stop-index="116" />
+                <column-projection name="k2" start-index="119" 
stop-index="120" />
+            </projections>
+            <from>
+                <simple-table name="example_table" start-index="127" 
stop-index="139" />
+            </from>
+            <group-by>
+                <column-item name="k1" start-index="150" stop-index="151" />
+                <column-item name="k2" start-index="154" stop-index="155" />
+            </group-by>
+        </select>
+    </alter-view>
 </sql-parser-test-cases>
diff --git a/test/it/parser/src/main/resources/case/ddl/create-encryptkey.xml 
b/test/it/parser/src/main/resources/case/ddl/create-encryptkey.xml
new file mode 100644
index 00000000000..98caf3ef721
--- /dev/null
+++ b/test/it/parser/src/main/resources/case/ddl/create-encryptkey.xml
@@ -0,0 +1,22 @@
+<?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>
+    <create-encryptkey sql-case-id="create_encryptkey" />
+    <create-encryptkey sql-case-id="create_encryptkey_with_database" />
+</sql-parser-test-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/alter-database.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-database.xml
index 5b7da87eeeb..d1ccbb429dd 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-database.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-database.xml
@@ -98,4 +98,9 @@
     <sql-case id="alter_database_set_managedlocation" value="ALTER DATABASE 
test_db SET MANAGEDLOCATION 'hdfs://namenode:8020/user/hive/managed/test_db';" 
db-types="Hive" />
     <sql-case id="alter_schema_set_managedlocation" value="ALTER SCHEMA 
test_db SET MANAGEDLOCATION 
'hdfs://namenode:8020/user/hive/managed/another_test_db';" db-types="Hive" />
     <sql-case id="alter_database_set_lc_messages" value="ALTER DATABASE 
&quot;regression&quot; SET lc_messages TO 'C'" db-types="PostgreSQL" />
+    <sql-case id="alter_database_set_data_quota" value="ALTER DATABASE 
example_db SET DATA QUOTA 10995116277760" db-types="Doris" />
+    <sql-case id="alter_database_set_replica_quota" value="ALTER DATABASE 
test_db SET REPLICA QUOTA 1024" db-types="Doris" />
+    <sql-case id="alter_database_set_transaction_quota" value="ALTER DATABASE 
prod_db SET TRANSACTION QUOTA 1000" db-types="Doris" />
+    <sql-case id="alter_database_rename_doris" value="ALTER DATABASE old_db 
RENAME new_db" db-types="Doris" />
+    <sql-case id="alter_database_set_properties" value="ALTER DATABASE 
example_db SET PROPERTIES (&quot;key1&quot; = &quot;value1&quot;, 
&quot;key2&quot; = &quot;value2&quot;)" db-types="Doris" />
 </sql-cases>
diff --git a/test/it/parser/src/main/resources/sql/supported/ddl/alter-view.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-view.xml
index 2fc1afd0e3c..a7dc777db70 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-view.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-view.xml
@@ -34,4 +34,5 @@
     <sql-case id="alter_view_as_select_basic" value="ALTER VIEW sales_summary 
AS SELECT order_id, amount FROM new_sales" db-types="Hive" />
     <sql-case id="alter_view_set_properties_with_db" value="ALTER VIEW 
db1.sales_summary SET TBLPROPERTIES ('is_archived' = 'false')" db-types="Hive" 
/>
     <sql-case id="alter_view_as_select_with_db" value="ALTER VIEW 
db1.sales_summary AS SELECT id, total FROM db2.orders" db-types="Hive" />
+    <sql-case id="alter_view_with_column_comments" value="ALTER VIEW 
example_db.example_view (c1 COMMENT 'column 1', c2 COMMENT 'column 2', c3 
COMMENT 'column 3') AS SELECT k1, k2 FROM example_table GROUP BY k1, k2" 
db-types="Doris" />
 </sql-cases>
diff --git 
a/test/it/parser/src/main/resources/sql/supported/ddl/create-encryptkey.xml 
b/test/it/parser/src/main/resources/sql/supported/ddl/create-encryptkey.xml
new file mode 100644
index 00000000000..1c57f1fca9b
--- /dev/null
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/create-encryptkey.xml
@@ -0,0 +1,22 @@
+<?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="create_encryptkey" value="CREATE ENCRYPTKEY test_key AS 
'ABCD123456789'" db-types="Doris" />
+    <sql-case id="create_encryptkey_with_database" value="CREATE ENCRYPTKEY 
testdb.test_key AS 'ABCD123456789'" db-types="Doris" />
+</sql-cases>

Reply via email to