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 6587777219f Refactor constructor of AlterTableStatement to empty 
buildAttributes (#38281)
6587777219f is described below

commit 6587777219fd191403ba341a28cf12b97b67e048
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 1 15:51:01 2026 +0800

    Refactor constructor of AlterTableStatement to empty buildAttributes 
(#38281)
---
 .../ddl/EncryptAlterTableTokenGeneratorTest.java   |  17 +-
 .../ShardingAlterTableSupportedCheckerTest.java    |   6 +-
 .../ShardingAlterTableRouteContextCheckerTest.java |   8 +-
 .../statement/ddl/AlterTableStatementBinder.java   |  34 ++--
 .../AlterTablePushDownMetaDataRefresherTest.java   |  10 +-
 .../statement/type/DorisDDLStatementVisitor.java   |  65 ++++---
 .../type/FirebirdDDLStatementVisitor.java          |  15 +-
 .../statement/type/HiveDDLStatementVisitor.java    |  16 +-
 .../statement/type/MySQLDDLStatementVisitor.java   |  37 ++--
 .../type/OpenGaussDDLStatementVisitor.java         |  23 ++-
 .../statement/type/OracleDDLStatementVisitor.java  |  19 +-
 .../type/PostgreSQLDDLStatementVisitor.java        |  23 ++-
 .../statement/type/SQL92DDLStatementVisitor.java   |  15 +-
 .../type/SQLServerDDLStatementVisitor.java         |  17 +-
 .../type/ddl/table/AlterTableStatement.java        | 197 +++++++++++++--------
 15 files changed, 274 insertions(+), 228 deletions(-)

diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGeneratorTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGeneratorTest.java
index 00bf7a0fb34..92b990ba045 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGeneratorTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/rewrite/token/generator/ddl/EncryptAlterTableTokenGeneratorTest.java
@@ -119,11 +119,11 @@ class EncryptAlterTableTokenGeneratorTest {
     }
     
     private SQLStatement createAddColumnStatement() {
-        AlterTableStatement result = new AlterTableStatement(databaseType);
-        result.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt"))));
         ColumnDefinitionSegment columnDefinitionSegment = new 
ColumnDefinitionSegment(
                 33, 67, new ColumnSegment(33, 50, new 
IdentifierValue("certificate_number")), new DataTypeSegment(), false, false, 
"");
-        result.getAddColumnDefinitions().add(new 
AddColumnDefinitionSegment(22, 67, 
Collections.singleton(columnDefinitionSegment)));
+        AlterTableStatement result = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt"))))
+                .addColumnDefinition(new AddColumnDefinitionSegment(22, 67, 
Collections.singleton(columnDefinitionSegment))).build();
         result.buildAttributes();
         return result;
     }
@@ -134,11 +134,11 @@ class EncryptAlterTableTokenGeneratorTest {
     }
     
     private SQLStatement createModifyColumnStatement() {
-        AlterTableStatement result = new AlterTableStatement(databaseType);
-        result.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt"))));
         ColumnDefinitionSegment columnDefinitionSegment = new 
ColumnDefinitionSegment(
                 36, 70, new ColumnSegment(36, 53, new 
IdentifierValue("certificate_number")), new DataTypeSegment(), false, false, 
"");
-        result.getModifyColumnDefinitions().add(new 
ModifyColumnDefinitionSegment(22, 70, columnDefinitionSegment));
+        AlterTableStatement result = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt"))))
+                .modifyColumnDefinition(new ModifyColumnDefinitionSegment(22, 
70, columnDefinitionSegment)).build();
         result.buildAttributes();
         return result;
     }
@@ -149,13 +149,12 @@ class EncryptAlterTableTokenGeneratorTest {
     }
     
     private SQLStatement createChangeColumnStatement() {
-        AlterTableStatement result = new AlterTableStatement(databaseType);
-        result.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt"))));
         ColumnDefinitionSegment columnDefinitionSegment = new 
ColumnDefinitionSegment(
                 55, 93, new ColumnSegment(55, 76, new 
IdentifierValue("certificate_number_new")), new DataTypeSegment(), false, 
false, "");
         ChangeColumnDefinitionSegment changeColumnDefinitionSegment = new 
ChangeColumnDefinitionSegment(22, 93, columnDefinitionSegment);
         changeColumnDefinitionSegment.setPreviousColumn(new ColumnSegment(36, 
53, new IdentifierValue("certificate_number")));
-        result.getChangeColumnDefinitions().add(changeColumnDefinitionSegment);
+        AlterTableStatement result = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_encrypt")))).changeColumnDefinition(changeColumnDefinitionSegment).build();
         result.buildAttributes();
         return result;
     }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterTableSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterTableSupportedCheckerTest.java
index 99ea141c739..d15421190d8 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterTableSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterTableSupportedCheckerTest.java
@@ -55,9 +55,9 @@ class ShardingAlterTableSupportedCheckerTest {
     
     @Test
     void assertCheckWithRenameTableWithShardingTable() {
-        AlterTableStatement sqlStatement = new 
AlterTableStatement(databaseType);
-        sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
-        sqlStatement.setRenameTable(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_new"))));
+        AlterTableStatement sqlStatement = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_order"))))
+                .renameTable(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("t_order_new")))).build();
         sqlStatement.buildAttributes();
         CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
         when(rule.containsShardingTable(Arrays.asList("t_order", 
"t_order_new"))).thenReturn(true);
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingAlterTableRouteContextCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingAlterTableRouteContextCheckerTest.java
index 1da74666625..591cb6fb361 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingAlterTableRouteContextCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingAlterTableRouteContextCheckerTest.java
@@ -68,8 +68,8 @@ class ShardingAlterTableRouteContextCheckerTest {
     
     @Test
     void assertCheckWithSameRouteResultShardingTableForPostgreSQL() {
-        AlterTableStatement sqlStatement = new 
AlterTableStatement(databaseType);
-        sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
+        AlterTableStatement sqlStatement = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_order")))).build();
         sqlStatement.buildAttributes();
         when(shardingRule.isShardingTable("t_order")).thenReturn(true);
         when(shardingRule.getShardingTable("t_order")).thenReturn(new 
ShardingTable(Arrays.asList("ds_0", "ds_1"), "t_order"));
@@ -83,8 +83,8 @@ class ShardingAlterTableRouteContextCheckerTest {
     
     @Test
     void assertCheckWithDifferentRouteResultShardingTableForPostgreSQL() {
-        AlterTableStatement sqlStatement = new 
AlterTableStatement(databaseType);
-        sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("t_order"))));
+        AlterTableStatement sqlStatement = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_order")))).build();
         sqlStatement.buildAttributes();
         when(shardingRule.isShardingTable("t_order")).thenReturn(true);
         when(shardingRule.getShardingTable("t_order")).thenReturn(new 
ShardingTable(Arrays.asList("ds_0", "ds_1"), "t_order"));
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
index ed1fb622bd0..08e291e6aba 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterTableStatementBinder.java
@@ -42,24 +42,22 @@ public final class AlterTableStatementBinder implements 
SQLStatementBinder<Alter
     }
     
     private AlterTableStatement copy(final AlterTableStatement sqlStatement, 
final SimpleTableSegment boundTable, final SimpleTableSegment boundRenameTable) 
{
-        AlterTableStatement result = new 
AlterTableStatement(sqlStatement.getDatabaseType());
-        result.setTable(boundTable);
-        result.setRenameTable(boundRenameTable);
-        // TODO bind column and reference table if kernel need use them
-        
sqlStatement.getConvertTableDefinition().ifPresent(result::setConvertTableDefinition);
-        
result.getAddColumnDefinitions().addAll(sqlStatement.getAddColumnDefinitions());
-        
result.getModifyColumnDefinitions().addAll(sqlStatement.getModifyColumnDefinitions());
-        
result.getChangeColumnDefinitions().addAll(sqlStatement.getChangeColumnDefinitions());
-        
result.getDropColumnDefinitions().addAll(sqlStatement.getDropColumnDefinitions());
-        
result.getAddConstraintDefinitions().addAll(sqlStatement.getAddConstraintDefinitions());
-        
result.getValidateConstraintDefinitions().addAll(sqlStatement.getValidateConstraintDefinitions());
-        
result.getModifyConstraintDefinitions().addAll(sqlStatement.getModifyConstraintDefinitions());
-        
result.getDropConstraintDefinitions().addAll(sqlStatement.getDropConstraintDefinitions());
-        
result.getDropIndexDefinitions().addAll(sqlStatement.getDropIndexDefinitions());
-        
result.getRenameColumnDefinitions().addAll(sqlStatement.getRenameColumnDefinitions());
-        
result.getRenameIndexDefinitions().addAll(sqlStatement.getRenameIndexDefinitions());
-        
sqlStatement.getModifyCollectionRetrieval().ifPresent(result::setModifyCollectionRetrieval);
-        
sqlStatement.getDropPrimaryKeyDefinition().ifPresent(result::setDropPrimaryKeyDefinition);
+        AlterTableStatement result = 
AlterTableStatement.builder().databaseType(sqlStatement.getDatabaseType()).table(boundTable).renameTable(boundRenameTable)
+                
.replaceTable(sqlStatement.getReplaceTable().orElse(null)).convertTableDefinition(sqlStatement.getConvertTableDefinition().orElse(null))
+                
.modifyCollectionRetrieval(sqlStatement.getModifyCollectionRetrieval().orElse(null)).algorithmSegment(sqlStatement.getGetAlgorithmSegment().orElse(null))
+                
.lockTableSegment(sqlStatement.getLockTableSegment().orElse(null)).dropPrimaryKeyDefinition(sqlStatement.getDropPrimaryKeyDefinition().orElse(null))
+                
.setPropertiesDefinitions(sqlStatement.getSetPropertiesDefinitions()).enableFeatureDefinitions(sqlStatement.getEnableFeatureDefinitions())
+                
.modifyTableCommentDefinitions(sqlStatement.getModifyTableCommentDefinitions()).modifyEngineDefinitions(sqlStatement.getModifyEngineDefinitions())
+                
.modifyDistributionDefinitions(sqlStatement.getModifyDistributionDefinitions()).addColumnDefinitions(sqlStatement.getAddColumnDefinitions())
+                
.modifyColumnDefinitions(sqlStatement.getModifyColumnDefinitions()).changeColumnDefinitions(sqlStatement.getChangeColumnDefinitions())
+                
.dropColumnDefinitions(sqlStatement.getDropColumnDefinitions()).addConstraintDefinitions(sqlStatement.getAddConstraintDefinitions())
+                
.validateConstraintDefinitions(sqlStatement.getValidateConstraintDefinitions()).modifyConstraintDefinitions(sqlStatement.getModifyConstraintDefinitions())
+                
.dropConstraintDefinitions(sqlStatement.getDropConstraintDefinitions()).dropIndexDefinitions(sqlStatement.getDropIndexDefinitions())
+                
.renameColumnDefinitions(sqlStatement.getRenameColumnDefinitions()).renameIndexDefinitions(sqlStatement.getRenameIndexDefinitions())
+                
.replaceColumnDefinitions(sqlStatement.getReplaceColumnDefinitions()).addRollupDefinitions(sqlStatement.getAddRollupDefinitions())
+                
.dropRollupDefinitions(sqlStatement.getDropRollupDefinitions()).renameRollupDefinitions(sqlStatement.getRenameRollupDefinitions())
+                
.renamePartitionDefinitions(sqlStatement.getRenamePartitionDefinitions()).addPartitionDefinitions(sqlStatement.getAddPartitionDefinitions())
+                
.addPartitionsSegments(sqlStatement.getAddPartitionsSegments()).modifyPartitionDefinitions(sqlStatement.getModifyPartitionDefinitions()).build();
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
         return result;
     }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/AlterTablePushDownMetaDataRefresherTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/AlterTablePushDownMetaDataRefresherTest.java
index 01511dc38a6..4e369524dcd 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/AlterTablePushDownMetaDataRefresherTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/AlterTablePushDownMetaDataRefresherTest.java
@@ -77,9 +77,9 @@ class AlterTablePushDownMetaDataRefresherTest {
     void assertRefreshRenameTable() throws SQLException {
         ShardingSphereRule rule = mock(ShardingSphereRule.class);
         when(rule.getAttributes()).thenReturn(new 
RuleAttributes(mutableDataNodeRuleAttribute));
-        AlterTableStatement sqlStatement = new 
AlterTableStatement(databaseType);
-        sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("foo_tbl"))));
-        sqlStatement.setRenameTable(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("bar_tbl"))));
+        AlterTableStatement sqlStatement = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("foo_tbl"))))
+                .renameTable(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("bar_tbl")))).build();
         
when(TableRefreshUtils.getTableName(sqlStatement.getTable().getTableName().getIdentifier(),
 databaseType)).thenReturn("foo_tbl");
         when(TableRefreshUtils.isSingleTable(any(), any())).thenReturn(true);
         ShardingSphereTable renamedTable = new ShardingSphereTable("bar_tbl", 
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
@@ -104,8 +104,8 @@ class AlterTablePushDownMetaDataRefresherTest {
         ShardingSphereRule rule = mock(ShardingSphereRule.class);
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.singleton(rule)), Collections.emptyList());
-        AlterTableStatement sqlStatement = new 
AlterTableStatement(databaseType);
-        sqlStatement.setTable(new SimpleTableSegment(new TableNameSegment(0, 
0, new IdentifierValue("foo_tbl"))));
+        AlterTableStatement sqlStatement = 
AlterTableStatement.builder().databaseType(databaseType)
+                .table(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("foo_tbl")))).build();
         
when(TableRefreshUtils.getTableName(sqlStatement.getTable().getTableName().getIdentifier(),
 databaseType)).thenReturn("foo_tbl");
         when(TableRefreshUtils.isSingleTable("foo_tbl", 
database)).thenReturn(false);
         ShardingSphereTable table = new ShardingSphereTable("foo_tbl", 
Collections.emptyList(), Collections.emptyList(), Collections.emptyList());
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 d98a6f1f00c..dd76f507747 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
@@ -611,22 +611,21 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null != ctx.standaloneAlterTableAction() && null != 
ctx.standaloneAlterTableAction().standaloneAlterCommands()) {
             processStandaloneAlterCommands(result, 
ctx.standaloneAlterTableAction().standaloneAlterCommands());
-            return result;
+            return result.build();
         }
         if (null == ctx.alterTableActions() || null == 
ctx.alterTableActions().alterCommandList() || null == 
ctx.alterTableActions().alterCommandList().alterList()) {
-            return result;
+            return result.build();
         }
         for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterTableActions().alterCommandList().alterList())).getValue()) {
             setAlterDefinition(result, each);
         }
-        return result;
+        return result.build();
     }
     
-    private void processStandaloneAlterCommands(final AlterTableStatement 
statement, final StandaloneAlterCommandsContext ctx) {
+    private void processStandaloneAlterCommands(final 
AlterTableStatement.AlterTableStatementBuilder statement, final 
StandaloneAlterCommandsContext ctx) {
         if (null != ctx.alterPartition()) {
             AlterDefinitionSegment alterDefinition = (AlterDefinitionSegment) 
visit(ctx.alterPartition());
             if (null != alterDefinition) {
@@ -635,7 +634,7 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
         }
         if (null != ctx.SET() && null != ctx.properties()) {
             PropertiesSegment properties = 
extractPropertiesSegmentFromPropertiesContext(ctx.properties());
-            statement.getSetPropertiesDefinitions().add(properties);
+            statement.setPropertiesDefinition(properties);
         }
         if (null != ctx.ENABLE() && null != ctx.FEATURE() && null != 
ctx.string_()) {
             int stopIndex = ctx.string_().getStop().getStopIndex();
@@ -646,23 +645,23 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
             if (null != ctx.WITH() && null != ctx.PROPERTIES() && null != 
ctx.properties()) {
                 
enableFeatureSegment.setProperties(extractPropertiesSegmentFromPropertiesContext(ctx.properties()));
             }
-            statement.getEnableFeatureDefinitions().add(enableFeatureSegment);
+            statement.enableFeatureDefinition(enableFeatureSegment);
         }
         if (null != ctx.modifyDistributionClause()) {
             ModifyDistributionSegment modifyDistributionSegment = 
(ModifyDistributionSegment) visit(ctx.modifyDistributionClause());
-            
statement.getModifyDistributionDefinitions().add(modifyDistributionSegment);
+            statement.modifyDistributionDefinition(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);
+            statement.modifyTableCommentDefinition(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);
+            statement.modifyEngineDefinition(modifyEngineSegment);
         }
     }
     
@@ -695,49 +694,49 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
         return result;
     }
     
-    private void setAlterDefinition(final AlterTableStatement 
alterTableStatement, final AlterDefinitionSegment alterDefinitionSegment) {
+    private void setAlterDefinition(final 
AlterTableStatement.AlterTableStatementBuilder alterTableStatement, final 
AlterDefinitionSegment alterDefinitionSegment) {
         if (alterDefinitionSegment instanceof AddColumnDefinitionSegment) {
-            
alterTableStatement.getAddColumnDefinitions().add((AddColumnDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.addColumnDefinition((AddColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ModifyColumnDefinitionSegment) {
-            
alterTableStatement.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.modifyColumnDefinition((ModifyColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ChangeColumnDefinitionSegment) {
-            
alterTableStatement.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.changeColumnDefinition((ChangeColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropColumnDefinitionSegment) {
-            
alterTableStatement.getDropColumnDefinitions().add((DropColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropColumnDefinition((DropColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
AddConstraintDefinitionSegment) {
-            
alterTableStatement.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.addConstraintDefinition((AddConstraintDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropConstraintDefinitionSegment) {
-            
alterTableStatement.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropConstraintDefinition((DropConstraintDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenameTableDefinitionSegment) {
-            alterTableStatement.setRenameTable(((RenameTableDefinitionSegment) 
alterDefinitionSegment).getRenameTable());
+            alterTableStatement.renameTable(((RenameTableDefinitionSegment) 
alterDefinitionSegment).getRenameTable());
         } else if (alterDefinitionSegment instanceof 
ReplaceTableDefinitionSegment) {
-            
alterTableStatement.setReplaceTable((ReplaceTableDefinitionSegment) 
alterDefinitionSegment);
+            alterTableStatement.replaceTable((ReplaceTableDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ConvertTableDefinitionSegment) {
-            
alterTableStatement.setConvertTableDefinition((ConvertTableDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.convertTableDefinition((ConvertTableDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropIndexDefinitionSegment) {
-            
alterTableStatement.getDropIndexDefinitions().add((DropIndexDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.dropIndexDefinition((DropIndexDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenameIndexDefinitionSegment) {
-            
alterTableStatement.getRenameIndexDefinitions().add((RenameIndexDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.renameIndexDefinition((RenameIndexDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof RenameColumnSegment) {
-            
alterTableStatement.getRenameColumnDefinitions().add((RenameColumnSegment) 
alterDefinitionSegment);
+            alterTableStatement.renameColumnDefinition((RenameColumnSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
AddRollupDefinitionSegment) {
-            
alterTableStatement.getAddRollupDefinitions().add((AddRollupDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.addRollupDefinition((AddRollupDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropRollupDefinitionSegment) {
-            
alterTableStatement.getDropRollupDefinitions().add((DropRollupDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropRollupDefinition((DropRollupDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenameRollupDefinitionSegment) {
-            
alterTableStatement.getRenameRollupDefinitions().add((RenameRollupDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.renameRollupDefinition((RenameRollupDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenamePartitionDefinitionSegment) {
-            
alterTableStatement.getRenamePartitionDefinitions().add((RenamePartitionDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.renamePartitionDefinition((RenamePartitionDefinitionSegment)
 alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
AddPartitionDefinitionSegment) {
-            
alterTableStatement.getAddPartitionDefinitions().add((AddPartitionDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.addPartitionDefinition((AddPartitionDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof AddPartitionsSegment) {
-            
alterTableStatement.getAddPartitionsSegments().add((AddPartitionsSegment) 
alterDefinitionSegment);
+            alterTableStatement.addPartitionsSegment((AddPartitionsSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ModifyPartitionDefinitionSegment) {
-            
alterTableStatement.getModifyPartitionDefinitions().add((ModifyPartitionDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.modifyPartitionDefinition((ModifyPartitionDefinitionSegment)
 alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof AlgorithmTypeSegment) {
-            alterTableStatement.setAlgorithmSegment((AlgorithmTypeSegment) 
alterDefinitionSegment);
+            alterTableStatement.algorithmSegment((AlgorithmTypeSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof LockTableSegment) {
-            alterTableStatement.setLockTableSegment((LockTableSegment) 
alterDefinitionSegment);
+            alterTableStatement.lockTableSegment((LockTableSegment) 
alterDefinitionSegment);
         }
     }
     
diff --git 
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
index 255a7dc4adc..f371d979a2b 100644
--- 
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDDLStatementVisitor.java
@@ -185,24 +185,23 @@ public final class FirebirdDDLStatementVisitor extends 
FirebirdStatementVisitor
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null != ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterDefinitionClause())).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
index 7c1e8f98fbc..8c74bb97586 100644
--- 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDDLStatementVisitor.java
@@ -122,19 +122,19 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) 
visit(ctx.alterTableCommonClause().tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType())
+                .table((SimpleTableSegment) 
visit(ctx.alterTableCommonClause().tableName()));
         if (null != ctx.changeColumn()) {
             ChangeColumnDefinitionSegment changeColumnSegment = 
(ChangeColumnDefinitionSegment) visit(ctx.changeColumn());
-            result.getChangeColumnDefinitions().add(changeColumnSegment);
+            result.changeColumnDefinition(changeColumnSegment);
         }
         if (null != ctx.addColumns()) {
             AddColumnDefinitionSegment addSeg = (AddColumnDefinitionSegment) 
visit(ctx.addColumns());
-            result.getAddColumnDefinitions().add(addSeg);
+            result.addColumnDefinition(addSeg);
         }
         if (null != ctx.replaceColumns()) {
             ReplaceColumnDefinitionSegment repSeg = 
(ReplaceColumnDefinitionSegment) visit(ctx.replaceColumns());
-            result.getReplaceColumnDefinitions().add(repSeg);
+            result.replaceColumnDefinition(repSeg);
         }
         if (null != ctx.COMPACT()) {
             String compactionType = ctx.string_().getText().replace("'", "");
@@ -146,7 +146,7 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
                 throw new IllegalArgumentException("[CLUSTERED INTO n BUCKETS] 
and [ORDER BY col_list] clauses can only be used with REBALANCE compaction");
             }
         }
-        return result;
+        return result.build();
     }
     
     private boolean isValidCompactionType(final String compactionType) {
@@ -157,9 +157,7 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitMsckStatement(final MsckStatementContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
-        return result;
+        return 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName())).build();
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
index 27454412f46..9ac4f189b28 100644
--- 
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/type/MySQLDDLStatementVisitor.java
@@ -334,46 +334,45 @@ public final class MySQLDDLStatementVisitor extends 
MySQLStatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null == ctx.alterTableActions() || null == 
ctx.alterTableActions().alterCommandList() || null == 
ctx.alterTableActions().alterCommandList().alterList()) {
-            return result;
+            return result.build();
         }
         for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterTableActions().alterCommandList().alterList())).getValue()) {
             setAlterDefinition(result, each);
         }
-        return result;
+        return result.build();
     }
     
-    private void setAlterDefinition(final AlterTableStatement 
alterTableStatement, final AlterDefinitionSegment alterDefinitionSegment) {
+    private void setAlterDefinition(final 
AlterTableStatement.AlterTableStatementBuilder alterTableStatement, final 
AlterDefinitionSegment alterDefinitionSegment) {
         if (alterDefinitionSegment instanceof AddColumnDefinitionSegment) {
-            
alterTableStatement.getAddColumnDefinitions().add((AddColumnDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.addColumnDefinition((AddColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ModifyColumnDefinitionSegment) {
-            
alterTableStatement.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.modifyColumnDefinition((ModifyColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
ChangeColumnDefinitionSegment) {
-            
alterTableStatement.getChangeColumnDefinitions().add((ChangeColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.changeColumnDefinition((ChangeColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropColumnDefinitionSegment) {
-            
alterTableStatement.getDropColumnDefinitions().add((DropColumnDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropColumnDefinition((DropColumnDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
AddConstraintDefinitionSegment) {
-            
alterTableStatement.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.addConstraintDefinition((AddConstraintDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropConstraintDefinitionSegment) {
-            
alterTableStatement.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropConstraintDefinition((DropConstraintDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenameTableDefinitionSegment) {
-            alterTableStatement.setRenameTable(((RenameTableDefinitionSegment) 
alterDefinitionSegment).getRenameTable());
+            alterTableStatement.renameTable(((RenameTableDefinitionSegment) 
alterDefinitionSegment).getRenameTable());
         } else if (alterDefinitionSegment instanceof 
ConvertTableDefinitionSegment) {
-            
alterTableStatement.setConvertTableDefinition((ConvertTableDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.convertTableDefinition((ConvertTableDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropIndexDefinitionSegment) {
-            
alterTableStatement.getDropIndexDefinitions().add((DropIndexDefinitionSegment) 
alterDefinitionSegment);
+            
alterTableStatement.dropIndexDefinition((DropIndexDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
RenameIndexDefinitionSegment) {
-            
alterTableStatement.getRenameIndexDefinitions().add((RenameIndexDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.renameIndexDefinition((RenameIndexDefinitionSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof RenameColumnSegment) {
-            
alterTableStatement.getRenameColumnDefinitions().add((RenameColumnSegment) 
alterDefinitionSegment);
+            alterTableStatement.renameColumnDefinition((RenameColumnSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof AlgorithmTypeSegment) {
-            alterTableStatement.setAlgorithmSegment((AlgorithmTypeSegment) 
alterDefinitionSegment);
+            alterTableStatement.algorithmSegment((AlgorithmTypeSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof LockTableSegment) {
-            alterTableStatement.setLockTableSegment((LockTableSegment) 
alterDefinitionSegment);
+            alterTableStatement.lockTableSegment((LockTableSegment) 
alterDefinitionSegment);
         } else if (alterDefinitionSegment instanceof 
DropPrimaryKeyDefinitionSegment) {
-            
alterTableStatement.setDropPrimaryKeyDefinition((DropPrimaryKeyDefinitionSegment)
 alterDefinitionSegment);
+            
alterTableStatement.dropPrimaryKeyDefinition((DropPrimaryKeyDefinitionSegment) 
alterDefinitionSegment);
         }
     }
     
diff --git 
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
index b66fbc6bed0..61859676c53 100644
--- 
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/type/OpenGaussDDLStatementVisitor.java
@@ -302,32 +302,31 @@ public final class OpenGaussDDLStatementVisitor extends 
OpenGaussStatementVisito
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) 
visit(ctx.tableNameClause().tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableNameClause().tableName()));
         if (null != ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterDefinitionClause())).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof 
ValidateConstraintDefinitionSegment) {
-                    
result.getValidateConstraintDefinitions().add((ValidateConstraintDefinitionSegment)
 each);
+                    
result.validateConstraintDefinition((ValidateConstraintDefinitionSegment) each);
                 } else if (each instanceof ModifyConstraintDefinitionSegment) {
-                    
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) 
each);
+                    
result.modifyConstraintDefinition((ModifyConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 } else if (each instanceof RenameTableDefinitionSegment) {
-                    result.setRenameTable(((RenameTableDefinitionSegment) 
each).getRenameTable());
+                    result.renameTable(((RenameTableDefinitionSegment) 
each).getRenameTable());
                 } else if (each instanceof RenameColumnSegment) {
-                    
result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
+                    result.renameColumnDefinition((RenameColumnSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
index 1cf170f1d92..8a1f27de672 100644
--- 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDDLStatementVisitor.java
@@ -541,28 +541,27 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null != ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterDefinitionClause())).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof ModifyConstraintDefinitionSegment) {
-                    
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) 
each);
+                    
result.modifyConstraintDefinition((ModifyConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 } else if (each instanceof ModifyCollectionRetrievalSegment) {
-                    
result.setModifyCollectionRetrieval((ModifyCollectionRetrievalSegment) each);
+                    
result.modifyCollectionRetrieval((ModifyCollectionRetrievalSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
index dd2532ca2fa..59e9207835a 100644
--- 
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/type/PostgreSQLDDLStatementVisitor.java
@@ -379,32 +379,31 @@ public final class PostgreSQLDDLStatementVisitor extends 
PostgreSQLStatementVisi
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) 
visit(ctx.tableNameClause().tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableNameClause().tableName()));
         if (null != ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterDefinitionClause())).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof 
ValidateConstraintDefinitionSegment) {
-                    
result.getValidateConstraintDefinitions().add((ValidateConstraintDefinitionSegment)
 each);
+                    
result.validateConstraintDefinition((ValidateConstraintDefinitionSegment) each);
                 } else if (each instanceof ModifyConstraintDefinitionSegment) {
-                    
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) 
each);
+                    
result.modifyConstraintDefinition((ModifyConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 } else if (each instanceof RenameTableDefinitionSegment) {
-                    result.setRenameTable(((RenameTableDefinitionSegment) 
each).getRenameTable());
+                    result.renameTable(((RenameTableDefinitionSegment) 
each).getRenameTable());
                 } else if (each instanceof RenameColumnSegment) {
-                    
result.getRenameColumnDefinitions().add((RenameColumnSegment) each);
+                    result.renameColumnDefinition((RenameColumnSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
 
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
index aab4cc947c5..01bf4eff3d7 100644
--- 
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DDLStatementVisitor.java
@@ -162,24 +162,23 @@ public final class SQL92DDLStatementVisitor extends 
SQL92StatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null != ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(ctx.alterDefinitionClause())).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
index aae1fa5732d..5c92133b987 100644
--- 
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/type/SQLServerDDLStatementVisitor.java
@@ -234,26 +234,25 @@ public final class SQLServerDDLStatementVisitor extends 
SQLServerStatementVisito
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitAlterTable(final AlterTableContext ctx) {
-        AlterTableStatement result = new 
AlterTableStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        AlterTableStatement.AlterTableStatementBuilder result = 
AlterTableStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         for (AlterDefinitionClauseContext alterDefinitionClauseContext : 
ctx.alterDefinitionClause()) {
             for (AlterDefinitionSegment each : 
((CollectionValue<AlterDefinitionSegment>) 
visit(alterDefinitionClauseContext)).getValue()) {
                 if (each instanceof AddColumnDefinitionSegment) {
-                    
result.getAddColumnDefinitions().add((AddColumnDefinitionSegment) each);
+                    result.addColumnDefinition((AddColumnDefinitionSegment) 
each);
                 } else if (each instanceof ModifyColumnDefinitionSegment) {
-                    
result.getModifyColumnDefinitions().add((ModifyColumnDefinitionSegment) each);
+                    
result.modifyColumnDefinition((ModifyColumnDefinitionSegment) each);
                 } else if (each instanceof DropColumnDefinitionSegment) {
-                    
result.getDropColumnDefinitions().add((DropColumnDefinitionSegment) each);
+                    result.dropColumnDefinition((DropColumnDefinitionSegment) 
each);
                 } else if (each instanceof AddConstraintDefinitionSegment) {
-                    
result.getAddConstraintDefinitions().add((AddConstraintDefinitionSegment) each);
+                    
result.addConstraintDefinition((AddConstraintDefinitionSegment) each);
                 } else if (each instanceof ModifyConstraintDefinitionSegment) {
-                    
result.getModifyConstraintDefinitions().add((ModifyConstraintDefinitionSegment) 
each);
+                    
result.modifyConstraintDefinition((ModifyConstraintDefinitionSegment) each);
                 } else if (each instanceof DropConstraintDefinitionSegment) {
-                    
result.getDropConstraintDefinitions().add((DropConstraintDefinitionSegment) 
each);
+                    
result.dropConstraintDefinition((DropConstraintDefinitionSegment) each);
                 }
             }
         }
-        return result;
+        return result.build();
     }
     
     @SuppressWarnings("unchecked")
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 99f2353b8e1..34944290d1b 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
@@ -17,8 +17,9 @@
 
 package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table;
 
+import lombok.Builder;
 import lombok.Getter;
-import lombok.Setter;
+import lombok.Singular;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.ColumnDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.column.alter.AddColumnDefinitionSegment;
@@ -33,6 +34,9 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.constrain
 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.constraint.alter.ValidateConstraintDefinitionSegment;
+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.index.DropIndexDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.RenameIndexDefinitionSegment;
@@ -41,13 +45,10 @@ 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.RenamePartitionDefinitionSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.primary.DropPrimaryKeyDefinitionSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.property.PropertiesSegment;
 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;
@@ -70,77 +71,164 @@ import java.util.stream.Collectors;
  * Alter table statement.
  */
 @Getter
-@Setter
 public final class AlterTableStatement extends DDLStatement {
     
-    private SimpleTableSegment table;
+    private final SimpleTableSegment table;
     
-    private SimpleTableSegment renameTable;
+    private final SimpleTableSegment renameTable;
     
-    private ReplaceTableDefinitionSegment replaceTable;
+    private final ReplaceTableDefinitionSegment replaceTable;
     
-    private ConvertTableDefinitionSegment convertTableDefinition;
+    private final ConvertTableDefinitionSegment convertTableDefinition;
     
-    private ModifyCollectionRetrievalSegment modifyCollectionRetrieval;
+    private final ModifyCollectionRetrievalSegment modifyCollectionRetrieval;
     
-    private AlgorithmTypeSegment algorithmSegment;
+    private final AlgorithmTypeSegment algorithmSegment;
     
-    private LockTableSegment lockTableSegment;
+    private final LockTableSegment lockTableSegment;
     
-    private DropPrimaryKeyDefinitionSegment dropPrimaryKeyDefinition;
+    private final DropPrimaryKeyDefinitionSegment dropPrimaryKeyDefinition;
     
-    private final Collection<PropertiesSegment> setPropertiesDefinitions = new 
LinkedList<>();
+    private final Collection<PropertiesSegment> setPropertiesDefinitions;
     
-    private final Collection<EnableFeatureSegment> enableFeatureDefinitions = 
new LinkedList<>();
+    private final Collection<EnableFeatureSegment> enableFeatureDefinitions;
     
-    private final Collection<ModifyTableCommentSegment> 
modifyTableCommentDefinitions = new LinkedList<>();
+    private final Collection<ModifyTableCommentSegment> 
modifyTableCommentDefinitions;
     
-    private final Collection<ModifyEngineSegment> modifyEngineDefinitions = 
new LinkedList<>();
+    private final Collection<ModifyEngineSegment> modifyEngineDefinitions;
     
-    private final Collection<ModifyDistributionSegment> 
modifyDistributionDefinitions = new LinkedList<>();
+    private final Collection<ModifyDistributionSegment> 
modifyDistributionDefinitions;
     
-    private final Collection<AddColumnDefinitionSegment> addColumnDefinitions 
= new LinkedList<>();
+    private final Collection<AddColumnDefinitionSegment> addColumnDefinitions;
     
-    private final Collection<ModifyColumnDefinitionSegment> 
modifyColumnDefinitions = new LinkedList<>();
+    private final Collection<ModifyColumnDefinitionSegment> 
modifyColumnDefinitions;
     
-    private final Collection<ChangeColumnDefinitionSegment> 
changeColumnDefinitions = new LinkedList<>();
+    private final Collection<ChangeColumnDefinitionSegment> 
changeColumnDefinitions;
     
-    private final Collection<DropColumnDefinitionSegment> 
dropColumnDefinitions = new LinkedList<>();
+    private final Collection<DropColumnDefinitionSegment> 
dropColumnDefinitions;
     
-    private final Collection<AddConstraintDefinitionSegment> 
addConstraintDefinitions = new LinkedList<>();
+    private final Collection<AddConstraintDefinitionSegment> 
addConstraintDefinitions;
     
-    private final Collection<ValidateConstraintDefinitionSegment> 
validateConstraintDefinitions = new LinkedList<>();
+    private final Collection<ValidateConstraintDefinitionSegment> 
validateConstraintDefinitions;
     
-    private final Collection<ModifyConstraintDefinitionSegment> 
modifyConstraintDefinitions = new LinkedList<>();
+    private final Collection<ModifyConstraintDefinitionSegment> 
modifyConstraintDefinitions;
     
-    private final Collection<DropConstraintDefinitionSegment> 
dropConstraintDefinitions = new LinkedList<>();
+    private final Collection<DropConstraintDefinitionSegment> 
dropConstraintDefinitions;
     
-    private final Collection<DropIndexDefinitionSegment> dropIndexDefinitions 
= new LinkedList<>();
+    private final Collection<DropIndexDefinitionSegment> dropIndexDefinitions;
     
-    private final Collection<RenameColumnSegment> renameColumnDefinitions = 
new LinkedList<>();
+    private final Collection<RenameColumnSegment> renameColumnDefinitions;
     
-    private final Collection<RenameIndexDefinitionSegment> 
renameIndexDefinitions = new LinkedList<>();
+    private final Collection<RenameIndexDefinitionSegment> 
renameIndexDefinitions;
     
-    private final Collection<ReplaceColumnDefinitionSegment> 
replaceColumnDefinitions = new LinkedList<>();
+    private final Collection<ReplaceColumnDefinitionSegment> 
replaceColumnDefinitions;
     
-    private final Collection<AddRollupDefinitionSegment> addRollupDefinitions 
= new LinkedList<>();
+    private final Collection<AddRollupDefinitionSegment> addRollupDefinitions;
     
-    private final Collection<DropRollupDefinitionSegment> 
dropRollupDefinitions = new LinkedList<>();
+    private final Collection<DropRollupDefinitionSegment> 
dropRollupDefinitions;
     
-    private final Collection<RenameRollupDefinitionSegment> 
renameRollupDefinitions = new LinkedList<>();
+    private final Collection<RenameRollupDefinitionSegment> 
renameRollupDefinitions;
     
-    private final Collection<RenamePartitionDefinitionSegment> 
renamePartitionDefinitions = new LinkedList<>();
+    private final Collection<RenamePartitionDefinitionSegment> 
renamePartitionDefinitions;
     
-    private final Collection<AddPartitionDefinitionSegment> 
addPartitionDefinitions = new LinkedList<>();
+    private final Collection<AddPartitionDefinitionSegment> 
addPartitionDefinitions;
     
-    private final Collection<AddPartitionsSegment> addPartitionsSegments = new 
LinkedList<>();
+    private final Collection<AddPartitionsSegment> addPartitionsSegments;
     
-    private final Collection<ModifyPartitionDefinitionSegment> 
modifyPartitionDefinitions = new LinkedList<>();
+    private final Collection<ModifyPartitionDefinitionSegment> 
modifyPartitionDefinitions;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
-    public AlterTableStatement(final DatabaseType databaseType) {
+    @Builder
+    private AlterTableStatement(final DatabaseType databaseType, final 
SimpleTableSegment table, final SimpleTableSegment renameTable, final 
ReplaceTableDefinitionSegment replaceTable,
+                                final ConvertTableDefinitionSegment 
convertTableDefinition, final ModifyCollectionRetrievalSegment 
modifyCollectionRetrieval,
+                                final AlgorithmTypeSegment algorithmSegment, 
final LockTableSegment lockTableSegment, final DropPrimaryKeyDefinitionSegment 
dropPrimaryKeyDefinition,
+                                @Singular("setPropertiesDefinition") final 
Collection<PropertiesSegment> setPropertiesDefinitions,
+                                @Singular("enableFeatureDefinition") final 
Collection<EnableFeatureSegment> enableFeatureDefinitions,
+                                @Singular("modifyTableCommentDefinition") 
final Collection<ModifyTableCommentSegment> modifyTableCommentDefinitions,
+                                @Singular("modifyEngineDefinition") final 
Collection<ModifyEngineSegment> modifyEngineDefinitions,
+                                @Singular("modifyDistributionDefinition") 
final Collection<ModifyDistributionSegment> modifyDistributionDefinitions,
+                                @Singular("addColumnDefinition") final 
Collection<AddColumnDefinitionSegment> addColumnDefinitions,
+                                @Singular("modifyColumnDefinition") final 
Collection<ModifyColumnDefinitionSegment> modifyColumnDefinitions,
+                                @Singular("changeColumnDefinition") final 
Collection<ChangeColumnDefinitionSegment> changeColumnDefinitions,
+                                @Singular("dropColumnDefinition") final 
Collection<DropColumnDefinitionSegment> dropColumnDefinitions,
+                                @Singular("addConstraintDefinition") final 
Collection<AddConstraintDefinitionSegment> addConstraintDefinitions,
+                                @Singular("validateConstraintDefinition") 
final Collection<ValidateConstraintDefinitionSegment> 
validateConstraintDefinitions,
+                                @Singular("modifyConstraintDefinition") final 
Collection<ModifyConstraintDefinitionSegment> modifyConstraintDefinitions,
+                                @Singular("dropConstraintDefinition") final 
Collection<DropConstraintDefinitionSegment> dropConstraintDefinitions,
+                                @Singular("dropIndexDefinition") final 
Collection<DropIndexDefinitionSegment> dropIndexDefinitions,
+                                @Singular("renameColumnDefinition") final 
Collection<RenameColumnSegment> renameColumnDefinitions,
+                                @Singular("renameIndexDefinition") final 
Collection<RenameIndexDefinitionSegment> renameIndexDefinitions,
+                                @Singular("replaceColumnDefinition") final 
Collection<ReplaceColumnDefinitionSegment> replaceColumnDefinitions,
+                                @Singular("addRollupDefinition") final 
Collection<AddRollupDefinitionSegment> addRollupDefinitions,
+                                @Singular("dropRollupDefinition") final 
Collection<DropRollupDefinitionSegment> dropRollupDefinitions,
+                                @Singular("renameRollupDefinition") final 
Collection<RenameRollupDefinitionSegment> renameRollupDefinitions,
+                                @Singular("renamePartitionDefinition") final 
Collection<RenamePartitionDefinitionSegment> renamePartitionDefinitions,
+                                @Singular("addPartitionDefinition") final 
Collection<AddPartitionDefinitionSegment> addPartitionDefinitions,
+                                @Singular("addPartitionsSegment") final 
Collection<AddPartitionsSegment> addPartitionsSegments,
+                                @Singular("modifyPartitionDefinition") final 
Collection<ModifyPartitionDefinitionSegment> modifyPartitionDefinitions) {
         super(databaseType);
+        this.table = table;
+        this.renameTable = renameTable;
+        this.replaceTable = replaceTable;
+        this.convertTableDefinition = convertTableDefinition;
+        this.modifyCollectionRetrieval = modifyCollectionRetrieval;
+        this.algorithmSegment = algorithmSegment;
+        this.lockTableSegment = lockTableSegment;
+        this.dropPrimaryKeyDefinition = dropPrimaryKeyDefinition;
+        this.setPropertiesDefinitions = setPropertiesDefinitions;
+        this.enableFeatureDefinitions = enableFeatureDefinitions;
+        this.modifyTableCommentDefinitions = modifyTableCommentDefinitions;
+        this.modifyEngineDefinitions = modifyEngineDefinitions;
+        this.modifyDistributionDefinitions = modifyDistributionDefinitions;
+        this.addColumnDefinitions = addColumnDefinitions;
+        this.modifyColumnDefinitions = modifyColumnDefinitions;
+        this.changeColumnDefinitions = changeColumnDefinitions;
+        this.dropColumnDefinitions = dropColumnDefinitions;
+        this.addConstraintDefinitions = addConstraintDefinitions;
+        this.validateConstraintDefinitions = validateConstraintDefinitions;
+        this.modifyConstraintDefinitions = modifyConstraintDefinitions;
+        this.dropConstraintDefinitions = dropConstraintDefinitions;
+        this.dropIndexDefinitions = dropIndexDefinitions;
+        this.renameColumnDefinitions = renameColumnDefinitions;
+        this.renameIndexDefinitions = renameIndexDefinitions;
+        this.replaceColumnDefinitions = replaceColumnDefinitions;
+        this.addRollupDefinitions = addRollupDefinitions;
+        this.dropRollupDefinitions = dropRollupDefinitions;
+        this.renameRollupDefinitions = renameRollupDefinitions;
+        this.renamePartitionDefinitions = renamePartitionDefinitions;
+        this.addPartitionDefinitions = addPartitionDefinitions;
+        this.addPartitionsSegments = addPartitionsSegments;
+        this.modifyPartitionDefinitions = modifyPartitionDefinitions;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(getTables()), new 
AlterTableConstraintSQLStatementAttribute(), new 
AlterTableIndexSQLStatementAttribute());
+    }
+    
+    private Collection<SimpleTableSegment> getTables() {
+        Collection<SimpleTableSegment> result = new LinkedList<>();
+        result.add(table);
+        if (getRenameTable().isPresent()) {
+            result.add(getRenameTable().get());
+        }
+        if (getReplaceTable().isPresent() && null != 
getReplaceTable().get().getReplaceTable()) {
+            result.add(getReplaceTable().get().getReplaceTable());
+        }
+        for (AddColumnDefinitionSegment each : addColumnDefinitions) {
+            for (ColumnDefinitionSegment columnDefinition : 
each.getColumnDefinitions()) {
+                result.addAll(columnDefinition.getReferencedTables());
+            }
+        }
+        for (ModifyColumnDefinitionSegment each : modifyColumnDefinitions) {
+            result.addAll(each.getColumnDefinition().getReferencedTables());
+        }
+        for (AddConstraintDefinitionSegment each : addConstraintDefinitions) {
+            
each.getConstraintDefinition().getReferencedTable().ifPresent(result::add);
+        }
+        for (ReplaceColumnDefinitionSegment each : replaceColumnDefinitions) {
+            for (ColumnDefinitionSegment columnDefinition : 
each.getColumnDefinitions()) {
+                result.addAll(columnDefinition.getReferencedTables());
+            }
+        }
+        return result;
     }
     
     /**
@@ -208,35 +296,6 @@ public final class AlterTableStatement extends 
DDLStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(getTables()), new 
AlterTableConstraintSQLStatementAttribute(), new 
AlterTableIndexSQLStatementAttribute());
-    }
-    
-    private Collection<SimpleTableSegment> getTables() {
-        Collection<SimpleTableSegment> result = new LinkedList<>();
-        result.add(table);
-        if (getRenameTable().isPresent()) {
-            result.add(getRenameTable().get());
-        }
-        if (getReplaceTable().isPresent() && null != 
getReplaceTable().get().getReplaceTable()) {
-            result.add(getReplaceTable().get().getReplaceTable());
-        }
-        for (AddColumnDefinitionSegment each : addColumnDefinitions) {
-            for (ColumnDefinitionSegment columnDefinition : 
each.getColumnDefinitions()) {
-                result.addAll(columnDefinition.getReferencedTables());
-            }
-        }
-        for (ModifyColumnDefinitionSegment each : modifyColumnDefinitions) {
-            result.addAll(each.getColumnDefinition().getReferencedTables());
-        }
-        for (AddConstraintDefinitionSegment each : addConstraintDefinitions) {
-            
each.getConstraintDefinition().getReferencedTable().ifPresent(result::add);
-        }
-        for (ReplaceColumnDefinitionSegment each : replaceColumnDefinitions) {
-            for (ColumnDefinitionSegment columnDefinition : 
each.getColumnDefinitions()) {
-                result.addAll(columnDefinition.getReferencedTables());
-            }
-        }
-        return result;
     }
     
     private class AlterTableConstraintSQLStatementAttribute implements 
ConstraintSQLStatementAttribute {

Reply via email to