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 4d3e9b02390 Support parsing Doris ALTER TABLE PROPERTY syntax (#38193)
4d3e9b02390 is described below
commit 4d3e9b02390a419fb2dab26df59f9ac72a1c1e8a
Author: cxy <[email protected]>
AuthorDate: Wed Feb 25 23:03:58 2026 +0800
Support parsing Doris ALTER TABLE PROPERTY syntax (#38193)
* Support parsing Doris ALTER TABLE PROPERTY syntax
* Support parsing Doris ALTER TABLE PROPERTY syntax
---
.../src/main/antlr4/imports/doris/BaseRule.g4 | 1 +
.../src/main/antlr4/imports/doris/DDLStatement.g4 | 9 +-
.../src/main/antlr4/imports/doris/DorisKeyword.g4 | 8 ++
.../visitor/statement/DorisStatementVisitor.java | 3 +
.../statement/type/DorisDDLStatementVisitor.java | 98 +++++++++++++++--
.../ddl/column/ColumnDefinitionSegment.java | 3 +
.../column/alter/DropColumnDefinitionSegment.java | 15 +++
.../ModifyDistributionSegment.java} | 15 +--
.../ModifyEngineSegment.java} | 27 +++--
.../EnableFeatureSegment.java} | 27 +++--
.../ModifyTableCommentSegment.java} | 13 +--
.../type/ddl/table/AlterTableStatement.java | 15 +++
.../segment/definition/ColumnDefinitionAssert.java | 6 ++
.../standard/type/AlterTableStatementAssert.java | 119 ++++++++++++++++++---
.../jaxb/segment/impl/column/ExpectedColumn.java | 4 +
.../impl/definition/ExpectedColumnDefinition.java | 4 +
.../ExpectedEnableFeatureDefinition.java} | 21 ++--
.../ExpectedModifyDistributionDefinition.java} | 23 ++--
.../ExpectedModifyEngineDefinition.java} | 21 ++--
.../ExpectedModifyTableCommentDefinition.java} | 20 ++--
.../table/AlterTableStatementTestCase.java | 20 ++++
.../src/main/resources/case/ddl/alter-table.xml | 104 ++++++++++++++++++
.../resources/sql/supported/ddl/alter-table.xml | 10 ++
23 files changed, 485 insertions(+), 101 deletions(-)
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 7a071cd7bd1..e18e719ee17 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
@@ -242,6 +242,7 @@ identifierKeywordsUnambiguous
| FAILED_LOGIN_ATTEMPTS
| FAST
| FAULTS
+ | FEATURE
| FILE_BLOCK_SIZE
| FILTER
| FIRST
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 25aadf18e90..c9204ef75aa 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
@@ -127,8 +127,8 @@ alterListItem
| ADD tableConstraintDef # addTableConstraint
| ADD ROLLUP rollupItem (COMMA_ rollupItem)* # addRollup
| CHANGE COLUMN? columnInternalRef=identifier columnDefinition place? #
changeColumn
- | MODIFY COLUMN? columnInternalRef=identifier fieldDefinition place? #
modifyColumn
- | DROP (COLUMN? columnInternalRef=identifier restrict? | FOREIGN KEY
columnInternalRef=identifier | PRIMARY KEY | keyOrIndex indexName | CHECK
identifier | CONSTRAINT identifier) # alterTableDrop
+ | MODIFY COLUMN? columnInternalRef=identifier (fieldDefinition place? |
COMMENT string_) # modifyColumn
+ | DROP (COLUMN? columnInternalRef=identifier restrict? | FOREIGN KEY
columnInternalRef=identifier | PRIMARY KEY | keyOrIndex indexName | CHECK
identifier | CONSTRAINT identifier) propertiesClause? # alterTableDrop
| DROP ROLLUP rollupNameItem (COMMA_ rollupNameItem)* # dropRollup
| DISABLE KEYS # disableKeys
| ENABLE KEYS # enableKeys
@@ -191,6 +191,11 @@ standaloneAlterCommands
| IMPORT TABLESPACE
| alterPartition
| (SECONDARY_LOAD | SECONDARY_UNLOAD)
+ | SET LP_ properties RP_
+ | ENABLE FEATURE string_ (WITH PROPERTIES LP_ properties RP_)?
+ | MODIFY DISTRIBUTION distributedbyClause
+ | MODIFY COMMENT string_
+ | MODIFY ENGINE TO identifier PROPERTIES LP_ properties RP_
;
alterPartition
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 85d2c6f4557..9df598e58c6 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
@@ -673,6 +673,10 @@ DISTRIBUTED
;
// DORIS ADDED END
+DISTRIBUTION
+ : D I S T R I B U T I O N
+ ;
+
DYNAMIC
: D Y N A M I C
;
@@ -835,6 +839,10 @@ FAULTS
: F A U L T S
;
+FEATURE
+ : F E A T U R E
+ ;
+
FETCH
: F E T C H
;
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 573d96cc69d..9152936d961 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
@@ -1455,6 +1455,9 @@ public abstract class DorisStatementVisitor extends
DorisStatementBaseVisitor<AS
@Override
public final ASTNode visitDataType(final DataTypeContext ctx) {
+ if (null == ctx.dataTypeName) {
+ return null;
+ }
DataTypeSegment result = new DataTypeSegment();
result.setDataTypeName(ctx.dataTypeName.getText());
result.setStartIndex(ctx.start.getStartIndex());
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 338bc45b769..8aa178e3be0 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
@@ -24,6 +24,7 @@ import
org.apache.shardingsphere.database.connector.core.type.DatabaseType;
import org.apache.shardingsphere.sql.parser.api.ASTNode;
import
org.apache.shardingsphere.sql.parser.api.visitor.statement.type.DDLStatementVisitor;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.AlterCatalogContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.StandaloneAlterCommandsContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ResumeJobContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.ResumeSyncJobContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PauseSyncJobContext;
@@ -136,6 +137,7 @@ import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DorisPa
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DistributedbyClauseContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PartitionValueListContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PropertiesClauseContext;
+import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.PropertiesContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateEncryptKeyContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.CreateFileContext;
import
org.apache.shardingsphere.sql.parser.autogen.DorisStatementParser.DropFileContext;
@@ -161,7 +163,10 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constrain
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.AddConstraintDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.DropConstraintDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constraint.alter.ModifyConstraintDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.distribution.ModifyDistributionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.engine.EngineSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.engine.ModifyEngineSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.feature.EnableFeatureSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.DropIndexDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexNameSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
@@ -189,6 +194,7 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.Alg
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ConvertTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.CreateTableOptionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.LockTableSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ModifyTableCommentSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.RenameTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ReplaceTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.tablespace.TablespaceSegment;
@@ -565,12 +571,8 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
public ASTNode visitAlterTable(final AlterTableContext ctx) {
AlterTableStatement result = new
AlterTableStatement(getDatabaseType());
result.setTable((SimpleTableSegment) visit(ctx.tableName()));
- if (null != ctx.standaloneAlterTableAction() && null !=
ctx.standaloneAlterTableAction().standaloneAlterCommands()
- && null !=
ctx.standaloneAlterTableAction().standaloneAlterCommands().alterPartition()) {
- AlterDefinitionSegment alterDefinition = (AlterDefinitionSegment)
visit(ctx.standaloneAlterTableAction().standaloneAlterCommands().alterPartition());
- if (null != alterDefinition) {
- setAlterDefinition(result, alterDefinition);
- }
+ if (null != ctx.standaloneAlterTableAction() && null !=
ctx.standaloneAlterTableAction().standaloneAlterCommands()) {
+ processStandaloneAlterCommands(result,
ctx.standaloneAlterTableAction().standaloneAlterCommands());
return result;
}
if (null == ctx.alterTableActions() || null ==
ctx.alterTableActions().alterCommandList() || null ==
ctx.alterTableActions().alterCommandList().alterList()) {
@@ -582,6 +584,58 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
return result;
}
+ private void processStandaloneAlterCommands(final AlterTableStatement
statement, final StandaloneAlterCommandsContext ctx) {
+ if (null != ctx.alterPartition()) {
+ AlterDefinitionSegment alterDefinition = (AlterDefinitionSegment)
visit(ctx.alterPartition());
+ if (null != alterDefinition) {
+ setAlterDefinition(statement, alterDefinition);
+ }
+ }
+ if (null != ctx.SET() && null != ctx.properties()) {
+ PropertiesSegment properties =
extractPropertiesSegmentFromPropertiesContext(ctx.properties());
+ statement.getSetPropertiesDefinitions().add(properties);
+ }
+ if (null != ctx.ENABLE() && null != ctx.FEATURE() && null !=
ctx.string_()) {
+ int stopIndex = ctx.string_().getStop().getStopIndex();
+ if (null != ctx.WITH() && null != ctx.PROPERTIES() && null !=
ctx.properties()) {
+ stopIndex = ctx.RP_().getSymbol().getStopIndex();
+ }
+ EnableFeatureSegment enableFeatureSegment = new
EnableFeatureSegment(ctx.ENABLE().getSymbol().getStartIndex(), stopIndex,
ctx.string_().getText());
+ if (null != ctx.WITH() && null != ctx.PROPERTIES() && null !=
ctx.properties()) {
+
enableFeatureSegment.setProperties(extractPropertiesSegmentFromPropertiesContext(ctx.properties()));
+ }
+ statement.getEnableFeatureDefinitions().add(enableFeatureSegment);
+ }
+ if (null != ctx.distributedbyClause()) {
+ ModifyDistributionSegment modifyDistributionSegment =
(ModifyDistributionSegment) visit(ctx.distributedbyClause());
+
statement.getModifyDistributionDefinitions().add(modifyDistributionSegment);
+ }
+ if (null != ctx.MODIFY() && null != ctx.COMMENT() && null !=
ctx.string_()) {
+ ModifyTableCommentSegment modifyTableCommentSegment =
+ new
ModifyTableCommentSegment(ctx.MODIFY().getSymbol().getStartIndex(),
ctx.string_().getStop().getStopIndex(), ctx.string_().getText());
+
statement.getModifyTableCommentDefinitions().add(modifyTableCommentSegment);
+ }
+ if (null != ctx.ENGINE() && null != ctx.identifier()) {
+ ModifyEngineSegment modifyEngineSegment = new
ModifyEngineSegment(ctx.ENGINE().getSymbol().getStartIndex(),
ctx.RP_().getSymbol().getStopIndex(), ctx.identifier().getText());
+ if (null != ctx.properties()) {
+
modifyEngineSegment.setProperties(extractPropertiesSegmentFromPropertiesContext(ctx.properties()));
+ }
+ statement.getModifyEngineDefinitions().add(modifyEngineSegment);
+ }
+ }
+
+ @Override
+ public ASTNode visitDistributedbyClause(final DistributedbyClauseContext
ctx) {
+ ModifyDistributionSegment result = new
ModifyDistributionSegment(ctx.start.getStartIndex(), ctx.stop.getStopIndex());
+ if (null != ctx.columnName()) {
+ result.getColumns().add((ColumnSegment) visit(ctx.columnName()));
+ }
+ if (null != ctx.NUMBER_()) {
+ result.setBuckets(Integer.parseInt(ctx.NUMBER_().getText()));
+ }
+ return result;
+ }
+
private void setAlterDefinition(final AlterTableStatement
alterTableStatement, final AlterDefinitionSegment alterDefinitionSegment) {
if (alterDefinitionSegment instanceof AddColumnDefinitionSegment) {
alterTableStatement.getAddColumnDefinitions().add((AddColumnDefinitionSegment)
alterDefinitionSegment);
@@ -635,6 +689,8 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
// TODO parse not null
ColumnDefinitionSegment result = new
ColumnDefinitionSegment(column.getStartIndex(), ctx.getStop().getStopIndex(),
column, dataTypeSegment, isPrimaryKey, false, getText(ctx));
result.setAutoIncrement(isAutoIncrement);
+ ctx.columnAttribute().stream().filter(each -> null != each.COMMENT()
&& null != each.string_()).findFirst()
+ .ifPresent(each ->
result.setComment(SQLUtils.getExactlyValue(each.string_().getText())));
return result;
}
@@ -730,7 +786,12 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
if (null == alterTableDrop.KEY() && null ==
alterTableDrop.keyOrIndex()) {
ColumnSegment column = new
ColumnSegment(alterTableDrop.columnInternalRef.start.getStartIndex(),
alterTableDrop.columnInternalRef.stop.getStopIndex(),
(IdentifierValue) visit(alterTableDrop.columnInternalRef));
- return Optional.of(new
DropColumnDefinitionSegment(alterTableDrop.getStart().getStartIndex(),
alterTableDrop.getStop().getStopIndex(), Collections.singleton(column)));
+ DropColumnDefinitionSegment dropColumnSegment =
+ new
DropColumnDefinitionSegment(alterTableDrop.getStart().getStartIndex(),
alterTableDrop.getStop().getStopIndex(), Collections.singleton(column));
+ if (null != alterTableDrop.propertiesClause()) {
+
dropColumnSegment.setProperties(extractPropertiesSegment(alterTableDrop.propertiesClause()));
+ }
+ return Optional.of(dropColumnSegment);
}
if (null != alterTableDrop.keyOrIndex()) {
return Optional.of(
@@ -830,8 +891,16 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
private ModifyColumnDefinitionSegment
generateModifyColumnDefinitionSegment(final ModifyColumnContext ctx) {
ColumnSegment column = new
ColumnSegment(ctx.columnInternalRef.start.getStartIndex(),
ctx.columnInternalRef.stop.getStopIndex(), (IdentifierValue)
visit(ctx.columnInternalRef));
- ModifyColumnDefinitionSegment result = new
ModifyColumnDefinitionSegment(
- ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex(),
generateColumnDefinitionSegment(column, ctx.fieldDefinition()));
+ ColumnDefinitionSegment columnDefinition;
+ if (null != ctx.fieldDefinition()) {
+ columnDefinition = generateColumnDefinitionSegment(column,
ctx.fieldDefinition());
+ } else {
+ columnDefinition = new
ColumnDefinitionSegment(ctx.columnInternalRef.start.getStartIndex(),
ctx.getStop().getStopIndex(), column, null, false, false, getText(ctx));
+ if (null != ctx.string_()) {
+
columnDefinition.setComment(SQLUtils.getExactlyValue(ctx.string_().getText()));
+ }
+ }
+ ModifyColumnDefinitionSegment result = new
ModifyColumnDefinitionSegment(ctx.getStart().getStartIndex(),
ctx.getStop().getStopIndex(), columnDefinition);
if (null != ctx.place()) {
result.setColumnPosition((ColumnPositionSegment)
visit(ctx.place()));
}
@@ -1244,6 +1313,17 @@ public final class DorisDDLStatementVisitor extends
DorisStatementVisitor implem
return result;
}
+ private PropertiesSegment
extractPropertiesSegmentFromPropertiesContext(final PropertiesContext ctx) {
+ PropertiesSegment result = new
PropertiesSegment(ctx.getStart().getStartIndex(), ctx.getStop().getStopIndex());
+ for (PropertyContext each : ctx.property()) {
+ String key = getPropertyKey(each);
+ String value = getPropertyValue(each);
+ PropertySegment propertySegment = new
PropertySegment(each.getStart().getStartIndex(), each.getStop().getStopIndex(),
key, value);
+ result.getProperties().add(propertySegment);
+ }
+ return result;
+ }
+
private String getPropertyValue(final PropertyContext ctx) {
return SQLUtils.getExactlyValue(ctx.literals().getText());
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/ColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/ColumnDefinitionSegment.java
index b9acd5d4673..1895e2cc79c 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/ColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/ColumnDefinitionSegment.java
@@ -62,4 +62,7 @@ public final class ColumnDefinitionSegment implements
CreateDefinitionSegment {
@Setter
private String collateName;
+
+ @Setter
+ private String comment;
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
index 1691ecc36af..8d9b5f10812 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
@@ -20,10 +20,13 @@ package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.a
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
import java.util.Collection;
+import java.util.Optional;
/**
* Drop column definition segment.
@@ -38,4 +41,16 @@ public final class DropColumnDefinitionSegment implements
AlterDefinitionSegment
private final int stopIndex;
private final Collection<ColumnSegment> columns;
+
+ @Setter
+ private PropertiesSegment properties;
+
+ /**
+ * Get properties.
+ *
+ * @return properties
+ */
+ public Optional<PropertiesSegment> getProperties() {
+ return Optional.ofNullable(properties);
+ }
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
similarity index 80%
copy from
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
copy to
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
index 1691ecc36af..a838b87a0c3 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/distribution/ModifyDistributionSegment.java
@@ -15,27 +15,30 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter;
+package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.distribution;
-import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
import java.util.Collection;
+import java.util.LinkedList;
/**
- * Drop column definition segment.
+ * Modify distribution segment.
*/
@RequiredArgsConstructor
@Getter
-@EqualsAndHashCode
-public final class DropColumnDefinitionSegment implements
AlterDefinitionSegment {
+@Setter
+public final class ModifyDistributionSegment implements AlterDefinitionSegment
{
private final int startIndex;
private final int stopIndex;
- private final Collection<ColumnSegment> columns;
+ private final Collection<ColumnSegment> columns = new LinkedList<>();
+
+ private Integer buckets;
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/engine/ModifyEngineSegment.java
similarity index 71%
copy from
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
copy to
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/engine/ModifyEngineSegment.java
index 1691ecc36af..7836c323e66 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/engine/ModifyEngineSegment.java
@@ -15,27 +15,38 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter;
+package org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.engine;
-import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
-import java.util.Collection;
+import java.util.Optional;
/**
- * Drop column definition segment.
+ * Modify engine segment.
*/
@RequiredArgsConstructor
@Getter
-@EqualsAndHashCode
-public final class DropColumnDefinitionSegment implements
AlterDefinitionSegment {
+@Setter
+public final class ModifyEngineSegment implements AlterDefinitionSegment {
private final int startIndex;
private final int stopIndex;
- private final Collection<ColumnSegment> columns;
+ private final String engineType;
+
+ private PropertiesSegment properties;
+
+ /**
+ * Get properties.
+ *
+ * @return properties
+ */
+ public Optional<PropertiesSegment> getProperties() {
+ return Optional.ofNullable(properties);
+ }
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/feature/EnableFeatureSegment.java
similarity index 71%
copy from
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
copy to
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/feature/EnableFeatureSegment.java
index 1691ecc36af..c3854a9511f 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/feature/EnableFeatureSegment.java
@@ -15,27 +15,38 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter;
+package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.feature;
-import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
+import lombok.Setter;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
-import java.util.Collection;
+import java.util.Optional;
/**
- * Drop column definition segment.
+ * Enable feature segment.
*/
@RequiredArgsConstructor
@Getter
-@EqualsAndHashCode
-public final class DropColumnDefinitionSegment implements
AlterDefinitionSegment {
+@Setter
+public final class EnableFeatureSegment implements AlterDefinitionSegment {
private final int startIndex;
private final int stopIndex;
- private final Collection<ColumnSegment> columns;
+ private final String featureName;
+
+ private PropertiesSegment properties;
+
+ /**
+ * Get properties.
+ *
+ * @return properties
+ */
+ public Optional<PropertiesSegment> getProperties() {
+ return Optional.ofNullable(properties);
+ }
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/ModifyTableCommentSegment.java
similarity index 75%
copy from
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
copy to
parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/ModifyTableCommentSegment.java
index 1691ecc36af..417307e2e9f 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/column/alter/DropColumnDefinitionSegment.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/segment/ddl/table/ModifyTableCommentSegment.java
@@ -15,27 +15,22 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter;
+package org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table;
-import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.AlterDefinitionSegment;
-import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
-
-import java.util.Collection;
/**
- * Drop column definition segment.
+ * Modify table comment segment.
*/
@RequiredArgsConstructor
@Getter
-@EqualsAndHashCode
-public final class DropColumnDefinitionSegment implements
AlterDefinitionSegment {
+public final class ModifyTableCommentSegment implements AlterDefinitionSegment
{
private final int startIndex;
private final int stopIndex;
- private final Collection<ColumnSegment> columns;
+ private final String tableComment;
}
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
index 941a87d8c81..99f2353b8e1 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/AlterTableStatement.java
@@ -44,9 +44,14 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.primary.D
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.AddRollupDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.DropRollupDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.RenameRollupDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.distribution.ModifyDistributionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.engine.ModifyEngineSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.feature.EnableFeatureSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.AlgorithmTypeSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ConvertTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.LockTableSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ModifyTableCommentSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ReplaceTableDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
@@ -84,6 +89,16 @@ public final class AlterTableStatement extends DDLStatement {
private DropPrimaryKeyDefinitionSegment dropPrimaryKeyDefinition;
+ private final Collection<PropertiesSegment> setPropertiesDefinitions = new
LinkedList<>();
+
+ private final Collection<EnableFeatureSegment> enableFeatureDefinitions =
new LinkedList<>();
+
+ private final Collection<ModifyTableCommentSegment>
modifyTableCommentDefinitions = new LinkedList<>();
+
+ private final Collection<ModifyEngineSegment> modifyEngineDefinitions =
new LinkedList<>();
+
+ private final Collection<ModifyDistributionSegment>
modifyDistributionDefinitions = new LinkedList<>();
+
private final Collection<AddColumnDefinitionSegment> addColumnDefinitions
= new LinkedList<>();
private final Collection<ModifyColumnDefinitionSegment>
modifyColumnDefinitions = new LinkedList<>();
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/definition/ColumnDefinitionAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/definition/ColumnDefinitionAssert.java
index c9c76f105f5..f58400b0a52 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/definition/ColumnDefinitionAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/segment/definition/ColumnDefinitionAssert.java
@@ -63,6 +63,12 @@ public final class ColumnDefinitionAssert {
if (expected.isNotNull()) {
assertThat(assertContext.getText("Column definition not null
assertion error: "), actual.isNotNull(), is(expected.isNotNull()));
}
+ if (null != expected.getComment()) {
+ assertNotNull(actual.getComment(), assertContext.getText("Column
definition comment should exist."));
+ assertThat(assertContext.getText("Column definition comment
assertion error: "), actual.getComment(), is(expected.getComment().getText()));
+ } else {
+ assertNull(actual.getComment(), assertContext.getText("Column
definition comment should not exist."));
+ }
}
private static void assertColumnName(final SQLCaseAssertContext
assertContext, final ColumnDefinitionSegment actual, final
ExpectedColumnDefinition expected) {
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
index 5e9f3dbd2e0..d186a68bd34 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/asserts/statement/ddl/standard/type/AlterTableStatementAssert.java
@@ -35,8 +35,12 @@ import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.partition
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.partition.ModifyPartitionDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.partition.PartitionValuesSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.partition.RenamePartitionDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.distribution.ModifyDistributionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.engine.ModifyEngineSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.feature.EnableFeatureSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.AddRollupDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.DropRollupDefinitionSegment;
+import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.table.ModifyTableCommentSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.expr.ExpressionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.primary.DropPrimaryKeyDefinitionSegment;
import
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.rollup.RenameRollupDefinitionSegment;
@@ -62,6 +66,7 @@ import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.rol
import
org.apache.shardingsphere.test.it.sql.parser.internal.asserts.segment.table.TableAssert;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedAddColumnDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedChangeColumnDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedColumn;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedColumnDefinition;
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.definition.ExpectedModifyColumnDefinition;
@@ -73,6 +78,10 @@ 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.segment.impl.definition.ExpectedAddRollupDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedDropRollupDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedRenameRollupDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedEnableFeatureDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyEngineDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyTableCommentDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyDistributionDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.partition.ExpectedAddPartitions;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedProperties;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedProperty;
@@ -80,7 +89,6 @@ 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.table.AlterTableStatementTestCase;
import java.util.Collection;
-import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
@@ -126,6 +134,11 @@ public final class AlterTableStatementAssert {
assertConvertTable(assertContext, actual, expected);
assertModifyCollectionRetrievalDefinitions(assertContext, actual,
expected);
assertDropPrimaryKeyDefinition(assertContext, actual, expected);
+ assertSetPropertiesDefinitions(assertContext, actual, expected);
+ assertEnableFeatureDefinitions(assertContext, actual, expected);
+ assertModifyTableCommentDefinitions(assertContext, actual, expected);
+ assertModifyEngineDefinitions(assertContext, actual, expected);
+ assertModifyDistributionDefinitions(assertContext, actual, expected);
}
private static void assertConvertTable(final SQLCaseAssertContext
assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
@@ -275,21 +288,23 @@ public final class AlterTableStatementAssert {
}
private static void assertDropColumns(final SQLCaseAssertContext
assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
- Collection<ColumnSegment> actualDropColumns = getDropColumns(actual);
- assertThat(assertContext.getText("Drop columns size assertion error:
"), actualDropColumns.size(), is(expected.getDropColumns().size()));
- int count = 0;
- for (ColumnSegment each : actualDropColumns) {
- ColumnAssert.assertIs(assertContext, each,
expected.getDropColumns().get(count));
- count++;
+ int actualColumnCount = 0;
+ for (DropColumnDefinitionSegment each :
actual.getDropColumnDefinitions()) {
+ actualColumnCount += each.getColumns().size();
}
- }
-
- private static Collection<ColumnSegment> getDropColumns(final
AlterTableStatement actual) {
- Collection<ColumnSegment> result = new LinkedList<>();
+ assertThat(assertContext.getText("Drop column definitions size
assertion error: "), actualColumnCount, is(expected.getDropColumns().size()));
+ int count = 0;
for (DropColumnDefinitionSegment each :
actual.getDropColumnDefinitions()) {
- result.addAll(each.getColumns());
+ for (ColumnSegment column : each.getColumns()) {
+ ExpectedColumn expectedColumn =
expected.getDropColumns().get(count);
+ ColumnAssert.assertIs(assertContext, column, expectedColumn);
+ if (null != expectedColumn.getProperties()) {
+ assertTrue(each.getProperties().isPresent(),
assertContext.getText("Drop column properties should exist"));
+ assertProperties(assertContext,
each.getProperties().get(), expectedColumn.getProperties());
+ }
+ count++;
+ }
}
- return result;
}
private static void assertRenameIndexDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
@@ -499,4 +514,82 @@ public final class AlterTableStatementAssert {
assertNotNull(expected.getDropPrimaryKeyDefinition(),
assertContext.getText("Actual drop primary key definition should exist."));
SQLSegmentAssert.assertIs(assertContext,
actual.getDropPrimaryKeyDefinition().get(),
expected.getDropPrimaryKeyDefinition());
}
+
+ private static void assertSetPropertiesDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Set properties definitions size
assertion error: "), actual.getSetPropertiesDefinitions().size(),
is(expected.getSetProperties().size()));
+ int count = 0;
+ for (PropertiesSegment each : actual.getSetPropertiesDefinitions()) {
+ ExpectedProperties expectedProperties =
expected.getSetProperties().get(count);
+ assertProperties(assertContext, each, expectedProperties);
+ SQLSegmentAssert.assertIs(assertContext, each, expectedProperties);
+ count++;
+ }
+ }
+
+ private static void assertEnableFeatureDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Enable feature definitions size
assertion error: "), actual.getEnableFeatureDefinitions().size(),
is(expected.getEnableFeatures().size()));
+ int count = 0;
+ for (EnableFeatureSegment each : actual.getEnableFeatureDefinitions())
{
+ ExpectedEnableFeatureDefinition expectedEnableFeature =
expected.getEnableFeatures().get(count);
+ assertThat(assertContext.getText("Feature name assertion error:
"), each.getFeatureName(), is(expectedEnableFeature.getFeatureName()));
+ if (null != expectedEnableFeature.getProperties()) {
+ assertTrue(each.getProperties().isPresent(),
assertContext.getText("Enable feature properties should exist"));
+ assertProperties(assertContext, each.getProperties().get(),
expectedEnableFeature.getProperties());
+ } else {
+ assertFalse(each.getProperties().isPresent(),
assertContext.getText("Enable feature properties should not exist"));
+ }
+ SQLSegmentAssert.assertIs(assertContext, each,
expectedEnableFeature);
+ count++;
+ }
+ }
+
+ private static void assertModifyTableCommentDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Modify table comment definitions
size assertion error: "), actual.getModifyTableCommentDefinitions().size(),
is(expected.getModifyTableComments().size()));
+ int count = 0;
+ for (ModifyTableCommentSegment each :
actual.getModifyTableCommentDefinitions()) {
+ ExpectedModifyTableCommentDefinition expectedModifyTableComment =
expected.getModifyTableComments().get(count);
+ assertThat(assertContext.getText("Table comment assertion error:
"), each.getTableComment(), is(expectedModifyTableComment.getTableComment()));
+ SQLSegmentAssert.assertIs(assertContext, each,
expectedModifyTableComment);
+ count++;
+ }
+ }
+
+ private static void assertModifyEngineDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Modify engine definitions size
assertion error: "), actual.getModifyEngineDefinitions().size(),
is(expected.getModifyEngines().size()));
+ int count = 0;
+ for (ModifyEngineSegment each : actual.getModifyEngineDefinitions()) {
+ ExpectedModifyEngineDefinition expectedModifyEngine =
expected.getModifyEngines().get(count);
+ assertThat(assertContext.getText("Engine type assertion error: "),
each.getEngineType(), is(expectedModifyEngine.getEngineType()));
+ if (null != expectedModifyEngine.getProperties()) {
+ assertTrue(each.getProperties().isPresent(),
assertContext.getText("Modify engine properties should exist"));
+ assertProperties(assertContext, each.getProperties().get(),
expectedModifyEngine.getProperties());
+ } else {
+ assertFalse(each.getProperties().isPresent(),
assertContext.getText("Modify engine properties should not exist"));
+ }
+ SQLSegmentAssert.assertIs(assertContext, each,
expectedModifyEngine);
+ count++;
+ }
+ }
+
+ private static void assertModifyDistributionDefinitions(final
SQLCaseAssertContext assertContext, final AlterTableStatement actual, final
AlterTableStatementTestCase expected) {
+ assertThat(assertContext.getText("Modify distribution definitions size
assertion error: "), actual.getModifyDistributionDefinitions().size(),
is(expected.getModifyDistributions().size()));
+ int count = 0;
+ for (ModifyDistributionSegment each :
actual.getModifyDistributionDefinitions()) {
+ ExpectedModifyDistributionDefinition expectedModifyDistribution =
expected.getModifyDistributions().get(count);
+ assertThat(assertContext.getText("Modify distribution columns size
assertion error: "), each.getColumns().size(),
is(expectedModifyDistribution.getColumns().size()));
+ int columnCount = 0;
+ for (ColumnSegment columnSegment : each.getColumns()) {
+ ColumnAssert.assertIs(assertContext, columnSegment,
expectedModifyDistribution.getColumns().get(columnCount));
+ columnCount++;
+ }
+ if (null != expectedModifyDistribution.getBuckets()) {
+ assertNotNull(each.getBuckets(), assertContext.getText("Modify
distribution buckets should exist"));
+ assertThat(assertContext.getText("Buckets assertion error: "),
each.getBuckets(), is(expectedModifyDistribution.getBuckets()));
+ } else {
+ assertNull(each.getBuckets(), assertContext.getText("Modify
distribution buckets should not exist"));
+ }
+ SQLSegmentAssert.assertIs(assertContext, each,
expectedModifyDistribution);
+ count++;
+ }
+ }
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
index 58bceb1d722..1ae223f73b6 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.bound.ExpectedColumnBoundInfo;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedProperties;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedExpressionSegment;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedOwner;
@@ -38,4 +39,7 @@ public final class ExpectedColumn extends
AbstractExpectedIdentifierSQLSegment i
@XmlElement(name = "column-bound")
private ExpectedColumnBoundInfo columnBound;
+
+ @XmlElement(name = "properties")
+ private ExpectedProperties properties;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedColumnDefinition.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedColumnDefinition.java
index b2b1ba1996a..a75b2302da2 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedColumnDefinition.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedColumnDefinition.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import lombok.Setter;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedColumn;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.comments.ExpectedComment;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.generic.ExpectedDataType;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedSimpleTable;
@@ -56,4 +57,7 @@ public final class ExpectedColumnDefinition extends
AbstractExpectedSQLSegment {
@XmlElement(name = "referenced-table")
private final List<ExpectedSimpleTable> referencedTables = new
LinkedList<>();
+
+ @XmlElement(name = "comment")
+ private ExpectedComment comment;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedEnableFeatureDefinition.java
similarity index 62%
copy from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
copy to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedEnableFeatureDefinition.java
index 58bceb1d722..a9a8bdf83b5 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedEnableFeatureDefinition.java
@@ -15,27 +15,26 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column;
+package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition;
import lombok.Getter;
import lombok.Setter;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.bound.ExpectedColumnBoundInfo;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedExpressionSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedOwner;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedProperties;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
- * Expected column.
+ * Expected enable feature definition.
*/
@Getter
@Setter
-public final class ExpectedColumn extends AbstractExpectedIdentifierSQLSegment
implements ExpectedExpressionSegment {
+public final class ExpectedEnableFeatureDefinition extends
AbstractExpectedSQLSegment {
- @XmlElement
- private ExpectedOwner owner;
+ @XmlAttribute(name = "feature-name")
+ private String featureName;
- @XmlElement(name = "column-bound")
- private ExpectedColumnBoundInfo columnBound;
+ @XmlElement(name = "properties")
+ private ExpectedProperties properties;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
similarity index 62%
copy from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
copy to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
index 58bceb1d722..ef68ef7a7cf 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyDistributionDefinition.java
@@ -15,27 +15,28 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column;
+package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition;
import lombok.Getter;
import lombok.Setter;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.bound.ExpectedColumnBoundInfo;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedExpressionSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedOwner;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column.ExpectedColumn;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
+import java.util.LinkedList;
+import java.util.List;
/**
- * Expected column.
+ * Expected modify distribution definition.
*/
@Getter
@Setter
-public final class ExpectedColumn extends AbstractExpectedIdentifierSQLSegment
implements ExpectedExpressionSegment {
+public final class ExpectedModifyDistributionDefinition extends
AbstractExpectedSQLSegment {
- @XmlElement
- private ExpectedOwner owner;
+ @XmlElement(name = "column")
+ private final List<ExpectedColumn> columns = new LinkedList<>();
- @XmlElement(name = "column-bound")
- private ExpectedColumnBoundInfo columnBound;
+ @XmlAttribute(name = "buckets")
+ private Integer buckets;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyEngineDefinition.java
similarity index 62%
copy from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
copy to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyEngineDefinition.java
index 58bceb1d722..58769797c52 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyEngineDefinition.java
@@ -15,27 +15,26 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column;
+package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition;
import lombok.Getter;
import lombok.Setter;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.bound.ExpectedColumnBoundInfo;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedExpressionSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedOwner;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.distsql.ExpectedProperties;
+import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
/**
- * Expected column.
+ * Expected modify engine definition.
*/
@Getter
@Setter
-public final class ExpectedColumn extends AbstractExpectedIdentifierSQLSegment
implements ExpectedExpressionSegment {
+public final class ExpectedModifyEngineDefinition extends
AbstractExpectedSQLSegment {
- @XmlElement
- private ExpectedOwner owner;
+ @XmlAttribute(name = "engine-type")
+ private String engineType;
- @XmlElement(name = "column-bound")
- private ExpectedColumnBoundInfo columnBound;
+ @XmlElement(name = "properties")
+ private ExpectedProperties properties;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyTableCommentDefinition.java
similarity index 56%
copy from
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
copy to
test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyTableCommentDefinition.java
index 58bceb1d722..340974ed76a 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/column/ExpectedColumn.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/segment/impl/definition/ExpectedModifyTableCommentDefinition.java
@@ -15,27 +15,21 @@
* limitations under the License.
*/
-package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.column;
+package
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition;
import lombok.Getter;
import lombok.Setter;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedIdentifierSQLSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.bound.ExpectedColumnBoundInfo;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.expr.ExpectedExpressionSegment;
-import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.table.ExpectedOwner;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.AbstractExpectedSQLSegment;
-import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlAttribute;
/**
- * Expected column.
+ * Expected modify table comment definition.
*/
@Getter
@Setter
-public final class ExpectedColumn extends AbstractExpectedIdentifierSQLSegment
implements ExpectedExpressionSegment {
+public final class ExpectedModifyTableCommentDefinition extends
AbstractExpectedSQLSegment {
- @XmlElement
- private ExpectedOwner owner;
-
- @XmlElement(name = "column-bound")
- private ExpectedColumnBoundInfo columnBound;
+ @XmlAttribute(name = "table-comment")
+ private String tableComment;
}
diff --git
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
index 12f85ded7c6..48aceb735c9 100644
---
a/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
+++
b/test/it/parser/src/main/java/org/apache/shardingsphere/test/it/sql/parser/internal/cases/parser/jaxb/statement/ddl/standard/table/AlterTableStatementTestCase.java
@@ -37,8 +37,13 @@ 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.segment.impl.definition.ExpectedReplaceTableDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedAddPartitionDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyPartitionDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedEnableFeatureDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyEngineDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyTableCommentDefinition;
+import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.definition.ExpectedModifyDistributionDefinition;
import
org.apache.shardingsphere.test.it.sql.parser.internal.cases.parser.jaxb.segment.impl.partition.ExpectedAddPartitions;
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.segment.impl.distsql.ExpectedProperties;
import javax.xml.bind.annotation.XmlElement;
import java.util.LinkedList;
@@ -113,4 +118,19 @@ public final class AlterTableStatementTestCase extends
SQLParserTestCase {
@XmlElement(name = "drop-primary-key")
private ExpectedDropPrimaryKeyDefinition dropPrimaryKeyDefinition;
+
+ @XmlElement(name = "set-properties")
+ private final List<ExpectedProperties> setProperties = new LinkedList<>();
+
+ @XmlElement(name = "enable-feature")
+ private final List<ExpectedEnableFeatureDefinition> enableFeatures = new
LinkedList<>();
+
+ @XmlElement(name = "modify-table-comment")
+ private final List<ExpectedModifyTableCommentDefinition>
modifyTableComments = new LinkedList<>();
+
+ @XmlElement(name = "modify-engine")
+ private final List<ExpectedModifyEngineDefinition> modifyEngines = new
LinkedList<>();
+
+ @XmlElement(name = "modify-distribution")
+ private final List<ExpectedModifyDistributionDefinition>
modifyDistributions = new LinkedList<>();
}
diff --git a/test/it/parser/src/main/resources/case/ddl/alter-table.xml
b/test/it/parser/src/main/resources/case/ddl/alter-table.xml
index 0a5e7133e00..b403ead414e 100644
--- a/test/it/parser/src/main/resources/case/ddl/alter-table.xml
+++ b/test/it/parser/src/main/resources/case/ddl/alter-table.xml
@@ -3233,4 +3233,108 @@
<interval-unit name="DAY" start-index="96" stop-index="98" />
</add-partitions>
</alter-table>
+
+ <alter-table sql-case-id="alter_table_set_bloom_filter_columns_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <set-properties start-index="37" stop-index="69">
+ <property key="bloom_filter_columns" value="k1,k2,k3"
start-index="37" stop-index="69" />
+ </set-properties>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_set_colocate_with_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <set-properties start-index="37" stop-index="58">
+ <property key="colocate_with" value="t1" start-index="37"
stop-index="58" />
+ </set-properties>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_drop_column_with_properties_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <drop-column name="col2" start-index="44" stop-index="47">
+ <properties start-index="49" stop-index="94">
+ <property key="bloom_filter_columns" value="k1,k2,k3"
start-index="61" stop-index="93" />
+ </properties>
+ </drop-column>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_enable_feature_batch_delete_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <enable-feature feature-name=""BATCH_DELETE""
start-index="32" stop-index="60" />
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_enable_feature_sequence_load_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <enable-feature feature-name=""SEQUENCE_LOAD""
start-index="32" stop-index="120">
+ <properties start-index="80" stop-index="119">
+ <property key="function_column.sequence_type" value="Date"
start-index="80" stop-index="119" />
+ </properties>
+ </enable-feature>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_modify_distribution_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-distribution start-index="52" stop-index="85" buckets="50">
+ <column name="k1" start-index="72" stop-index="73" />
+ </modify-distribution>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_modify_table_comment_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-table-comment table-comment=""new comment""
start-index="32" stop-index="59" />
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_modify_column_comment_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-column>
+ <column-definition start-index="46" stop-index="60">
+ <column name="k1" />
+ <comment text="k1" />
+ </column-definition>
+ </modify-column>
+ </alter-table>
+
+ <alter-table
sql-case-id="alter_table_modify_multiple_column_comments_doris">
+ <table name="my_table" start-index="12" stop-index="30">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-column>
+ <column-definition start-index="46" stop-index="60">
+ <column name="k1" />
+ <comment text="k1" />
+ </column-definition>
+ </modify-column>
+ <modify-column>
+ <column-definition start-index="77" stop-index="91">
+ <column name="k2" />
+ <comment text="k2" />
+ </column-definition>
+ </modify-column>
+ </alter-table>
+
+ <alter-table sql-case-id="alter_table_modify_engine_doris">
+ <table name="mysql_table" start-index="12" stop-index="33">
+ <owner name="example_db" start-index="12" stop-index="21" />
+ </table>
+ <modify-engine engine-type="odbc" start-index="42" stop-index="86">
+ <properties start-index="68" stop-index="85">
+ <property key="driver" value="MySQL" start-index="68"
stop-index="85" />
+ </properties>
+ </modify-engine>
+ </alter-table>
</sql-parser-test-cases>
diff --git
a/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
b/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
index 91f2eddb9e3..05253af41d1 100644
--- a/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
+++ b/test/it/parser/src/main/resources/sql/supported/ddl/alter-table.xml
@@ -429,4 +429,14 @@
<sql-case id="alter_table_add_partitions_from_to_interval_month_doris"
value="ALTER TABLE example_db.my_table ADD PARTITIONS FROM
("2023-01-01") TO ("2025-01-01") INTERVAL 1 MONTH"
db-types="Doris" />
<sql-case id="alter_table_add_partitions_from_to_interval_week_doris"
value="ALTER TABLE example_db.my_table ADD PARTITIONS FROM
("2023-01-01") TO ("2025-01-01") INTERVAL 1 WEEK"
db-types="Doris" />
<sql-case id="alter_table_add_partitions_from_to_interval_day_doris"
value="ALTER TABLE example_db.my_table ADD PARTITIONS FROM
("2023-01-01") TO ("2025-01-01") INTERVAL 1 DAY"
db-types="Doris" />
+ <sql-case id="alter_table_set_bloom_filter_columns_doris" value="ALTER
TABLE example_db.my_table SET
("bloom_filter_columns"="k1,k2,k3")" db-types="Doris" />
+ <sql-case id="alter_table_set_colocate_with_doris" value="ALTER TABLE
example_db.my_table SET ("colocate_with" = "t1")"
db-types="Doris" />
+ <sql-case id="alter_table_drop_column_with_properties_doris" value="ALTER
TABLE example_db.my_table DROP COLUMN col2 PROPERTIES
("bloom_filter_columns"="k1,k2,k3")" db-types="Doris" />
+ <sql-case id="alter_table_enable_feature_batch_delete_doris" value="ALTER
TABLE example_db.my_table ENABLE FEATURE "BATCH_DELETE""
db-types="Doris" />
+ <sql-case id="alter_table_enable_feature_sequence_load_doris" value="ALTER
TABLE example_db.my_table ENABLE FEATURE "SEQUENCE_LOAD" WITH
PROPERTIES ("function_column.sequence_type" = "Date")"
db-types="Doris" />
+ <sql-case id="alter_table_modify_distribution_doris" value="ALTER TABLE
example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY HASH(k1) BUCKETS 50"
db-types="Doris" />
+ <sql-case id="alter_table_modify_table_comment_doris" value="ALTER TABLE
example_db.my_table MODIFY COMMENT "new comment"" db-types="Doris" />
+ <sql-case id="alter_table_modify_column_comment_doris" value="ALTER TABLE
example_db.my_table MODIFY COLUMN k1 COMMENT "k1"" db-types="Doris" />
+ <sql-case id="alter_table_modify_multiple_column_comments_doris"
value="ALTER TABLE example_db.my_table MODIFY COLUMN k1 COMMENT "k1",
MODIFY COLUMN k2 COMMENT "k2"" db-types="Doris" />
+ <sql-case id="alter_table_modify_engine_doris" value="ALTER TABLE
example_db.mysql_table MODIFY ENGINE TO odbc PROPERTIES("driver" =
"MySQL")" db-types="Doris" />
</sql-cases>