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 aef2e4558a3 Refactor constructor of AlterIndexStatement to empty 
buildAttributes (#38278)
aef2e4558a3 is described below

commit aef2e4558a33cbafdd3b794280abbd0718255dd7
Author: Liang Zhang <[email protected]>
AuthorDate: Sun Mar 1 11:50:02 2026 +0800

    Refactor constructor of AlterIndexStatement to empty buildAttributes 
(#38278)
    
    * Refactor constructor of AlterIndexStatement to remove buildAttributes
    
    * Refactor constructor of AlterIndexStatement to empty buildAttributes
    
    * Refactor constructor of AlterIndexStatement to empty buildAttributes
---
 .../ShardingAlterIndexSupportedCheckerTest.java    | 29 +++++++----------
 .../impl/ShardingIndexTokenGeneratorTest.java      | 37 ++++++----------------
 .../statement/ddl/AlterIndexStatementBinder.java   |  8 +----
 .../AlterIndexPushDownMetaDataRefresherTest.java   | 11 ++-----
 .../statement/type/HiveDDLStatementVisitor.java    |  9 ++----
 .../type/OpenGaussDDLStatementVisitor.java         | 10 +++---
 .../statement/type/OracleDDLStatementVisitor.java  |  4 +--
 .../type/PostgreSQLDDLStatementVisitor.java        | 10 +++---
 .../type/SQLServerDDLStatementVisitor.java         |  7 +---
 .../type/ddl/index/AlterIndexStatement.java        | 21 ++++++------
 10 files changed, 47 insertions(+), 99 deletions(-)

diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
index 16f28653ac9..f3c1ce00153 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingAlterIndexSupportedCheckerTest.java
@@ -56,24 +56,20 @@ class ShardingAlterIndexSupportedCheckerTest {
     
     @Test
     void assertCheckWhenIndexExistRenameIndexNotExistForPostgreSQL() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("t_order_index"))));
-        sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
-        sqlStatement.buildAttributes();
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("t_order_index")).thenReturn(true);
-        when(table.containsIndex("t_order_index_new")).thenReturn(false);
+        when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
+        when(table.containsIndex("foo_tbl_idx_new")).thenReturn(false);
+        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+                new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("foo_tbl_idx_new"))), null);
         assertDoesNotThrow(() -> new 
ShardingAlterIndexSupportedChecker().check(rule, database, schema, new 
CommonSQLStatementContext(sqlStatement)));
     }
     
     @Test
     void assertCheckWhenIndexNotExistRenameIndexNotExistForPostgreSQL() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("t_order_index"))));
-        sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
-        sqlStatement.buildAttributes();
+        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+                new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("foo_tbl_idx_new"))), null);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         
when(database.getSchema("public").getTable("t_order")).thenReturn(table);
         assertThrows(IndexNotFoundException.class, () -> new 
ShardingAlterIndexSupportedChecker().check(rule, database, mock(), new 
CommonSQLStatementContext(sqlStatement)));
@@ -81,16 +77,13 @@ class ShardingAlterIndexSupportedCheckerTest {
     
     @Test
     void assertCheckAlterIndexWhenIndexExistRenameIndexExistForPostgreSQL() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("t_order_index"))));
-        sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
-        sqlStatement.buildAttributes();
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(schema.getAllTables()).thenReturn(Collections.singleton(table));
-        when(table.containsIndex("t_order_index")).thenReturn(true);
-        when(table.containsIndex("t_order_index_new")).thenReturn(true);
-        assertThrows(DuplicateIndexException.class,
-                () -> new ShardingAlterIndexSupportedChecker().check(rule, 
database, schema, new CommonSQLStatementContext(sqlStatement)));
+        when(table.containsIndex("foo_tbl_idx")).thenReturn(true);
+        when(table.containsIndex("foo_tbl_idx_new")).thenReturn(true);
+        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("foo_tbl_idx"))),
+                new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("foo_tbl_idx_new"))), null);
+        assertThrows(DuplicateIndexException.class, () -> new 
ShardingAlterIndexSupportedChecker().check(rule, database, schema, new 
CommonSQLStatementContext(sqlStatement)));
     }
 }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
index 14928125abf..60b5cd0c2c1 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/rewrite/token/generator/impl/ShardingIndexTokenGeneratorTest.java
@@ -54,65 +54,46 @@ class ShardingIndexTokenGeneratorTest {
     
     @Test
     void assertIsNotGenerateSQLTokenWithNotIndexContextAvailable() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.buildAttributes();
         SQLStatementContext sqlStatementContext = 
mock(SQLStatementContext.class);
-        when(sqlStatementContext.getSqlStatement()).thenReturn(sqlStatement);
+        when(sqlStatementContext.getSqlStatement()).thenReturn(new 
AlterIndexStatement(databaseType, null, null, null));
         assertFalse(generator.isGenerateSQLToken(sqlStatementContext));
     }
     
     @Test
     void assertIsNotGenerateSQLTokenWithEmptyIndex() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(postgresqlDatabaseType);
-        sqlStatement.buildAttributes();
-        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
+        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new AlterIndexStatement(postgresqlDatabaseType, null, 
null, null));
         assertFalse(generator.isGenerateSQLToken(sqlStatementContext));
     }
     
     @Test
     void assertIsGenerateSQLToken() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(postgresqlDatabaseType);
-        sqlStatement.setIndex(mock(IndexSegment.class));
-        sqlStatement.buildAttributes();
-        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
+        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new AlterIndexStatement(postgresqlDatabaseType, 
mock(IndexSegment.class), null, null));
         assertTrue(generator.isGenerateSQLToken(sqlStatementContext));
     }
     
     @Test
     void assertGenerateSQLTokensWithNotIndexContextAvailable() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.buildAttributes();
-        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
-        Collection<SQLToken> actual = 
generator.generateSQLTokens(sqlStatementContext);
-        assertTrue(actual.isEmpty());
+        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new AlterIndexStatement(databaseType, null, null, 
null));
+        assertTrue(generator.generateSQLTokens(sqlStatementContext).isEmpty());
     }
     
     @Test
     void assertGenerateSQLTokensWithSchemaOwner() throws 
ReflectiveOperationException {
         IndexSegment indexSegment = new IndexSegment(1, 3, new 
IndexNameSegment(1, 3, mock(IdentifierValue.class)));
         indexSegment.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("foo_schema")));
-        CommonSQLStatementContext sqlStatementContext = 
mockAlterIndexStatementContext(indexSegment);
+        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new AlterIndexStatement(databaseType, indexSegment, 
null, null));
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         generator.setSchemas(Collections.singletonMap("foo_schema", schema));
-        Collection<SQLToken> actual = 
generator.generateSQLTokens(sqlStatementContext);
-        assertTokens(actual, schema);
+        assertTokens(generator.generateSQLTokens(sqlStatementContext), schema);
     }
     
     @Test
     void assertGenerateSQLTokensWithoutSchemaOwner() throws 
ReflectiveOperationException {
         IndexSegment indexSegment = new IndexSegment(1, 3, new 
IndexNameSegment(1, 3, mock(IdentifierValue.class)));
-        CommonSQLStatementContext sqlStatementContext = 
mockAlterIndexStatementContext(indexSegment);
+        CommonSQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(new AlterIndexStatement(databaseType, indexSegment, 
null, null));
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         generator.setDefaultSchema(schema);
-        Collection<SQLToken> actual = 
generator.generateSQLTokens(sqlStatementContext);
-        assertTokens(actual, schema);
-    }
-    
-    private CommonSQLStatementContext mockAlterIndexStatementContext(final 
IndexSegment indexSegment) {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setIndex(indexSegment);
-        sqlStatement.buildAttributes();
-        return new CommonSQLStatementContext(sqlStatement);
+        assertTokens(generator.generateSQLTokens(sqlStatementContext), schema);
     }
     
     private void assertTokens(final Collection<SQLToken> actual, final 
ShardingSphereSchema schema) throws ReflectiveOperationException {
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
index 9fca6e97db3..fa3009b854d 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/AlterIndexStatementBinder.java
@@ -21,7 +21,6 @@ import com.google.common.collect.LinkedHashMultimap;
 import 
org.apache.shardingsphere.infra.binder.engine.segment.dml.from.type.SimpleTableSegmentBinder;
 import 
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinder;
 import 
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementBinderContext;
-import 
org.apache.shardingsphere.infra.binder.engine.statement.SQLStatementCopyUtils;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index.AlterIndexStatement;
 
@@ -40,11 +39,6 @@ public final class AlterIndexStatementBinder implements 
SQLStatementBinder<Alter
     }
     
     private AlterIndexStatement copy(final AlterIndexStatement sqlStatement, 
final SimpleTableSegment boundTable) {
-        AlterIndexStatement result = new 
AlterIndexStatement(sqlStatement.getDatabaseType());
-        sqlStatement.getIndex().ifPresent(result::setIndex);
-        sqlStatement.getRenameIndex().ifPresent(result::setRenameIndex);
-        result.setSimpleTable(boundTable);
-        SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
-        return result;
+        return new AlterIndexStatement(sqlStatement.getDatabaseType(), 
sqlStatement.getIndex().orElse(null), 
sqlStatement.getRenameIndex().orElse(null), boundTable);
     }
 }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
index 101de804bc6..03436ed4d4b 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/AlterIndexPushDownMetaDataRefresherTest.java
@@ -61,8 +61,7 @@ class AlterIndexPushDownMetaDataRefresherTest {
     
     @Test
     void assertRefreshReturnWhenRenameMissing() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("idx_old"))));
+        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType, new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_old"))), null, null);
         refresher.refresh(metaDataManagerPersistService, new 
ShardingSphereDatabase("foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()),
                 new RuleMetaData(Collections.emptyList()), 
Collections.emptyList()), "logic_ds", "foo_schema", databaseType, sqlStatement, 
new ConfigurationProperties(new Properties()));
         verifyNoInteractions(metaDataManagerPersistService);
@@ -70,8 +69,7 @@ class AlterIndexPushDownMetaDataRefresherTest {
     
     @Test
     void assertRefreshReturnWhenIndexMissing() {
-        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType);
-        sqlStatement.setRenameIndex(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_new"))));
+        AlterIndexStatement sqlStatement = new 
AlterIndexStatement(databaseType, null, new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_new"))), null);
         refresher.refresh(metaDataManagerPersistService, new 
ShardingSphereDatabase("foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()),
                 new RuleMetaData(Collections.emptyList()), 
Collections.emptyList()), "logic_ds", "foo_schema", databaseType, sqlStatement, 
new ConfigurationProperties(new Properties()));
         verifyNoInteractions(metaDataManagerPersistService);
@@ -95,11 +93,8 @@ class AlterIndexPushDownMetaDataRefresherTest {
     }
     
     private AlterIndexStatement createAlterStatement() {
-        AlterIndexStatement result = new AlterIndexStatement(databaseType);
         IndexSegment index = new IndexSegment(0, 0, new IndexNameSegment(0, 0, 
new IdentifierValue("idx_old")));
         index.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("BAR_SCHEMA")));
-        result.setIndex(index);
-        result.setRenameIndex(new IndexSegment(0, 0, new IndexNameSegment(0, 
0, new IdentifierValue("idx_new"))));
-        return result;
+        return new AlterIndexStatement(databaseType, index, new 
IndexSegment(0, 0, new IndexNameSegment(0, 0, new IdentifierValue("idx_new"))), 
null);
     }
 }
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 8016bf27f19..7c1e8f98fbc 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
@@ -399,12 +399,9 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
-        AlterIndexStatement result = new 
AlterIndexStatement(getDatabaseType());
-        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(),
-                new IdentifierValue(ctx.indexName().getText()));
-        result.setIndex(new 
IndexSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(), indexName));
-        result.setSimpleTable((SimpleTableSegment) 
visit(ctx.tableNameWithDb()));
-        return result;
+        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(), new 
IdentifierValue(ctx.indexName().getText()));
+        return new AlterIndexStatement(getDatabaseType(),
+                new IndexSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(), indexName), null, 
(SimpleTableSegment) visit(ctx.tableNameWithDb()));
     }
     
     @Override
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 8a1f1f42b34..b66fbc6bed0 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
@@ -584,12 +584,10 @@ public final class OpenGaussDDLStatementVisitor extends 
OpenGaussStatementVisito
     
     @Override
     public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
-        AlterIndexStatement result = new 
AlterIndexStatement(getDatabaseType());
-        result.setIndex(createIndexSegment((SimpleTableSegment) 
visit(ctx.qualifiedName())));
-        if (null != 
ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
-            result.setRenameIndex((IndexSegment) 
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
-        }
-        return result;
+        IndexSegment renameIndex = null == 
ctx.alterIndexDefinitionClause().renameIndexSpecification()
+                ? null
+                : (IndexSegment) 
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName());
+        return new AlterIndexStatement(getDatabaseType(), 
createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())), 
renameIndex, null);
     }
     
     private IndexSegment createIndexSegment(final SimpleTableSegment 
tableSegment) {
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 775c87cb048..1cf170f1d92 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
@@ -868,9 +868,7 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
     
     @Override
     public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
-        AlterIndexStatement result = new 
AlterIndexStatement(getDatabaseType());
-        result.setIndex((IndexSegment) visit(ctx.indexName()));
-        return result;
+        return new AlterIndexStatement(getDatabaseType(), (IndexSegment) 
visit(ctx.indexName()), null, null);
     }
     
     @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 346da9c4d7a..dd2532ca2fa 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
@@ -726,12 +726,10 @@ public final class PostgreSQLDDLStatementVisitor extends 
PostgreSQLStatementVisi
     
     @Override
     public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
-        AlterIndexStatement result = new 
AlterIndexStatement(getDatabaseType());
-        result.setIndex(createIndexSegment((SimpleTableSegment) 
visit(ctx.qualifiedName())));
-        if (null != 
ctx.alterIndexDefinitionClause().renameIndexSpecification()) {
-            result.setRenameIndex((IndexSegment) 
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName()));
-        }
-        return result;
+        IndexSegment renameIndex = null == 
ctx.alterIndexDefinitionClause().renameIndexSpecification()
+                ? null
+                : (IndexSegment) 
visit(ctx.alterIndexDefinitionClause().renameIndexSpecification().indexName());
+        return new AlterIndexStatement(getDatabaseType(), 
createIndexSegment((SimpleTableSegment) visit(ctx.qualifiedName())), 
renameIndex, null);
     }
     
     private IndexSegment createIndexSegment(final SimpleTableSegment 
tableSegment) {
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 0cead576441..aae1fa5732d 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
@@ -343,12 +343,7 @@ public final class SQLServerDDLStatementVisitor extends 
SQLServerStatementVisito
     
     @Override
     public ASTNode visitAlterIndex(final AlterIndexContext ctx) {
-        AlterIndexStatement result = new 
AlterIndexStatement(getDatabaseType());
-        if (null != ctx.indexName()) {
-            result.setIndex((IndexSegment) visit(ctx.indexName()));
-        }
-        result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
-        return result;
+        return new AlterIndexStatement(getDatabaseType(), null == 
ctx.indexName() ? null : (IndexSegment) visit(ctx.indexName()), null, 
(SimpleTableSegment) visit(ctx.tableName()));
     }
     
     @Override
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
index 70fac4775f8..4ea95e415e9 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/AlterIndexStatement.java
@@ -18,7 +18,6 @@
 package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.index;
 
 import lombok.Getter;
-import lombok.Setter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.ddl.index.IndexSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.column.ColumnSegment;
@@ -36,20 +35,23 @@ import java.util.Optional;
 /**
  * Alter index statement.
  */
-@Setter
 public final class AlterIndexStatement extends DDLStatement {
     
-    private IndexSegment index;
+    private final IndexSegment index;
     
-    private IndexSegment renameIndex;
+    private final IndexSegment renameIndex;
     
-    private SimpleTableSegment simpleTable;
+    private final SimpleTableSegment simpleTable;
     
     @Getter
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
-    public AlterIndexStatement(final DatabaseType databaseType) {
+    public AlterIndexStatement(final DatabaseType databaseType, final 
IndexSegment index, final IndexSegment renameIndex, final SimpleTableSegment 
simpleTable) {
         super(databaseType);
+        this.index = index;
+        this.renameIndex = renameIndex;
+        this.simpleTable = simpleTable;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(simpleTable), new 
AlterIndexIndexSQLStatementAttribute());
     }
     
     /**
@@ -81,7 +83,6 @@ public final class AlterIndexStatement extends DDLStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(simpleTable), new 
AlterIndexIndexSQLStatementAttribute());
     }
     
     private class AlterIndexIndexSQLStatementAttribute implements 
IndexSQLStatementAttribute {
@@ -89,9 +90,7 @@ public final class AlterIndexStatement extends DDLStatement {
         @Override
         public Collection<IndexSegment> getIndexes() {
             Collection<IndexSegment> result = new LinkedList<>();
-            if (getIndex().isPresent()) {
-                result.add(getIndex().get());
-            }
+            getIndex().ifPresent(result::add);
             getRenameIndex().ifPresent(result::add);
             return result;
         }

Reply via email to