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
"regression" 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 ("key1" = "value1",
"key2" = "value2")" 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>