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 49bc3f43f8c Refactor constructor of DropIndexStatement to empty 
buildAttributes (#38325)
49bc3f43f8c is described below

commit 49bc3f43f8c8093ed6033d9b4cb0161f26339197
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Mar 4 00:56:25 2026 +0800

    Refactor constructor of DropIndexStatement to empty buildAttributes (#38325)
---
 .../ddl/ShardingDropIndexSupportedCheckerTest.java | 17 +++++++++------
 .../ShardingDropIndexRouteContextCheckerTest.java  | 16 ++++++++------
 .../ShardingTableBroadcastRouteEngineTest.java     |  3 +--
 .../statement/ddl/DropIndexStatementBinder.java    | 14 ++++++------
 .../DropIndexPushDownMetaDataRefresherTest.java    | 20 +++++++++++------
 .../statement/type/DorisDDLStatementVisitor.java   | 21 +++++++++++-------
 .../statement/type/HiveDDLStatementVisitor.java    | 11 +++++-----
 .../statement/type/MySQLDDLStatementVisitor.java   | 19 ++++++++++------
 .../type/OpenGaussDDLStatementVisitor.java         |  9 ++++----
 .../statement/type/OracleDDLStatementVisitor.java  |  7 +++---
 .../type/PostgreSQLDDLStatementVisitor.java        |  9 ++++----
 .../type/SQLServerDDLStatementVisitor.java         | 11 +++++-----
 .../type/ddl/index/DropIndexStatement.java         | 25 ++++++++++++----------
 13 files changed, 108 insertions(+), 74 deletions(-)

diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
index 06e675e6b7e..29af51c1495 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropIndexSupportedCheckerTest.java
@@ -35,6 +35,7 @@ import org.mockito.Answers;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
 
+import java.util.Arrays;
 import java.util.Collections;
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
@@ -55,9 +56,11 @@ class ShardingDropIndexSupportedCheckerTest {
     
     @Test
     void assertCheckWhenIndexExistForPostgreSQL() {
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Arrays.asList(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))),
+                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("t_order_index_new")))))
+                .build();
         sqlStatement.buildAttributes();
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
         ShardingSphereTable table = mock(ShardingSphereTable.class);
@@ -69,9 +72,11 @@ class ShardingDropIndexSupportedCheckerTest {
     
     @Test
     void assertCheckWhenIndexNotExistForPostgreSQL() {
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Arrays.asList(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))),
+                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("t_order_index_new")))))
+                .build();
         sqlStatement.buildAttributes();
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         
when(database.getSchema("public").getAllTables()).thenReturn(Collections.singleton(table));
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
index ee498ac824d..0b6bb9a0790 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropIndexRouteContextCheckerTest.java
@@ -69,9 +69,11 @@ class ShardingDropIndexRouteContextCheckerTest {
     
     @Test
     void assertCheckWithSameRouteResultShardingTableIndexForPostgreSQL() {
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Arrays.asList(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))),
+                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("t_order_index_new")))))
+                .build();
         sqlStatement.buildAttributes();
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(table.getName()).thenReturn("t_order");
@@ -90,9 +92,11 @@ class ShardingDropIndexRouteContextCheckerTest {
     
     @Test
     void assertCheckWithDifferentRouteResultShardingTableIndexForPostgreSQL() {
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))));
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index_new"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Arrays.asList(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("t_order_index"))),
+                        new IndexSegment(0, 0, new IndexNameSegment(0, 0, new 
IdentifierValue("t_order_index_new")))))
+                .build();
         sqlStatement.buildAttributes();
         ShardingSphereTable table = mock(ShardingSphereTable.class);
         when(table.getName()).thenReturn("t_order");
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
index e5144840ab7..472eaec3ee8 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/type/broadcast/ShardingTableBroadcastRouteEngineTest.java
@@ -89,8 +89,7 @@ class ShardingTableBroadcastRouteEngineTest {
         IndexSegment segment = mock(IndexSegment.class, RETURNS_DEEP_STUBS);
         
when(segment.getIndexName().getIdentifier().getValue()).thenReturn("t_order");
         when(segment.getOwner()).thenReturn(Optional.empty());
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(segment);
+        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).indexes(Collections.singleton(segment)).build();
         sqlStatement.buildAttributes();
         ShardingSphereDatabase database = new ShardingSphereDatabase("foo_db", 
databaseType, mock(ResourceMetaData.class), mock(RuleMetaData.class), 
Collections.singleton(schema));
         ShardingTableBroadcastRouteEngine shardingTableBroadcastRouteEngine = 
new ShardingTableBroadcastRouteEngine(database, sqlStatement, 
Collections.emptyList());
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
index 5284bb6c626..322a1cefce1 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropIndexStatementBinder.java
@@ -39,12 +39,14 @@ public final class DropIndexStatementBinder implements 
SQLStatementBinder<DropIn
     }
     
     private DropIndexStatement copy(final DropIndexStatement sqlStatement, 
final SimpleTableSegment boundTable) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(sqlStatement.getDatabaseType()).build();
-        result.setSimpleTable(boundTable);
-        result.getIndexes().addAll(sqlStatement.getIndexes());
-        sqlStatement.getAlgorithmType().ifPresent(result::setAlgorithmType);
-        sqlStatement.getLockTable().ifPresent(result::setLockTable);
-        result.setIfExists(sqlStatement.isIfExists());
+        DropIndexStatement result = DropIndexStatement.builder()
+                .databaseType(sqlStatement.getDatabaseType())
+                .indexes(sqlStatement.getIndexes())
+                .ifExists(sqlStatement.isIfExists())
+                .simpleTable(boundTable)
+                .algorithmType(sqlStatement.getAlgorithmType().orElse(null))
+                .lockTable(sqlStatement.getLockTable().orElse(null))
+                .build();
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
         return result;
     }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/DropIndexPushDownMetaDataRefresherTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/DropIndexPushDownMetaDataRefresherTest.java
index 86a4b1c6eb7..4bb1ec69119 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/DropIndexPushDownMetaDataRefresherTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/index/DropIndexPushDownMetaDataRefresherTest.java
@@ -70,8 +70,10 @@ class DropIndexPushDownMetaDataRefresherTest {
                 Collections.singleton(new ShardingSphereTable("foo_tbl", 
Collections.emptyList(), Collections.emptyList(), Collections.emptyList())), 
Collections.emptyList());
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), Collections.singleton(schema));
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("missing_idx"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Collections.singleton(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("missing_idx")))))
+                .build();
         refresher.refresh(metaDataManagerPersistService, database, "logic_ds", 
"foo_db", databaseType, sqlStatement, new ConfigurationProperties(new 
Properties()));
         verifyNoInteractions(metaDataManagerPersistService);
     }
@@ -81,9 +83,11 @@ class DropIndexPushDownMetaDataRefresherTest {
         ShardingSphereSchema schema = new ShardingSphereSchema("foo_schema", 
mock(DatabaseType.class));
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), Collections.singleton(schema));
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.setSimpleTable(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("foo_tbl"))));
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_foo"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .simpleTable(new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("foo_tbl"))))
+                .indexes(Collections.singleton(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_foo")))))
+                .build();
         assertThrows(TableNotFoundException.class, () -> 
refresher.refresh(metaDataManagerPersistService,
                 database, "logic_ds", "foo_schema", databaseType, 
sqlStatement, new ConfigurationProperties(new Properties())));
         verify(metaDataManagerPersistService, 
never()).alterTables(eq(database), eq("foo_schema"), any());
@@ -97,8 +101,10 @@ class DropIndexPushDownMetaDataRefresherTest {
         ShardingSphereSchema schema = new ShardingSphereSchema("foo_db", 
databaseType, Collections.singleton(table), Collections.emptyList());
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), Collections.singleton(schema));
-        DropIndexStatement sqlStatement = 
DropIndexStatement.builder().databaseType(databaseType).build();
-        sqlStatement.getIndexes().add(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_foo"))));
+        DropIndexStatement sqlStatement = DropIndexStatement.builder()
+                .databaseType(databaseType)
+                .indexes(Collections.singleton(new IndexSegment(0, 0, new 
IndexNameSegment(0, 0, new IdentifierValue("idx_foo")))))
+                .build();
         refresher.refresh(metaDataManagerPersistService, database, "logic_ds", 
"foo_db", databaseType, sqlStatement, new ConfigurationProperties(new 
Properties()));
         ArgumentCaptor<Collection<ShardingSphereTable>> alteredTablesCaptor = 
ArgumentCaptor.forClass(Collection.class);
         verify(metaDataManagerPersistService).alterTables(eq(database), 
eq("foo_db"), alteredTablesCaptor.capture());
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 d7f1d6e55b3..41977a1ba95 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
@@ -1191,20 +1191,25 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setIfExists(null != ctx.ifExists());
-        result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
-        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), new 
IdentifierValue(ctx.indexName().getText()));
-        result.getIndexes().add(new 
IndexSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), indexName));
+        AlgorithmTypeSegment algorithmType = null;
+        LockTableSegment lockTable = null;
         if (null != ctx.algorithmOptionAndLockOption()) {
             if (null != 
ctx.algorithmOptionAndLockOption().alterAlgorithmOption()) {
-                result.setAlgorithmType((AlgorithmTypeSegment) 
visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption()));
+                algorithmType = (AlgorithmTypeSegment) 
visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption());
             }
             if (null != ctx.algorithmOptionAndLockOption().alterLockOption()) {
-                result.setLockTable((LockTableSegment) 
visit(ctx.algorithmOptionAndLockOption().alterLockOption()));
+                lockTable = (LockTableSegment) 
visit(ctx.algorithmOptionAndLockOption().alterLockOption());
             }
         }
-        return result;
+        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), new 
IdentifierValue(ctx.indexName().getText()));
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .ifExists(null != ctx.ifExists())
+                .indexes(Collections.singleton(new 
IndexSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), indexName)))
+                .simpleTable((SimpleTableSegment) visit(ctx.tableName()))
+                .algorithmType(algorithmType)
+                .lockTable(lockTable)
+                .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 8b937d23b8c..ae126411475 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
@@ -396,13 +396,14 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setIfExists(null != ctx.ifExists());
         IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(),
                 new IdentifierValue(ctx.indexName().getText()));
-        result.getIndexes().add(new 
IndexSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(), indexName));
-        result.setSimpleTable((SimpleTableSegment) 
visit(ctx.tableNameWithDb()));
-        return result;
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .ifExists(null != ctx.ifExists())
+                .indexes(Collections.singleton(new 
IndexSegment(ctx.indexName().getStart().getStartIndex(), 
ctx.indexName().getStop().getStopIndex(), indexName)))
+                .simpleTable((SimpleTableSegment) visit(ctx.tableNameWithDb()))
+                .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 0e818ff0a65..afe2540ed31 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
@@ -734,19 +734,24 @@ public final class MySQLDDLStatementVisitor extends 
MySQLStatementVisitor implem
     
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
-        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), new 
IdentifierValue(ctx.indexName().getText()));
-        result.getIndexes().add(new 
IndexSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), indexName));
+        AlgorithmTypeSegment algorithmType = null;
+        LockTableSegment lockTable = null;
         if (null != ctx.algorithmOptionAndLockOption()) {
             if (null != 
ctx.algorithmOptionAndLockOption().alterAlgorithmOption()) {
-                result.setAlgorithmType((AlgorithmTypeSegment) 
visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption()));
+                algorithmType = (AlgorithmTypeSegment) 
visit(ctx.algorithmOptionAndLockOption().alterAlgorithmOption());
             }
             if (null != ctx.algorithmOptionAndLockOption().alterLockOption()) {
-                result.setLockTable((LockTableSegment) 
visit(ctx.algorithmOptionAndLockOption().alterLockOption()));
+                lockTable = (LockTableSegment) 
visit(ctx.algorithmOptionAndLockOption().alterLockOption());
             }
         }
-        return result;
+        IndexNameSegment indexName = new 
IndexNameSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), new 
IdentifierValue(ctx.indexName().getText()));
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .indexes(Collections.singleton(new 
IndexSegment(ctx.indexName().start.getStartIndex(), 
ctx.indexName().stop.getStopIndex(), indexName)))
+                .simpleTable((SimpleTableSegment) visit(ctx.tableName()))
+                .algorithmType(algorithmType)
+                .lockTable(lockTable)
+                .build();
     }
     
     @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 a6dd6d2ba97..0602de03b5e 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
@@ -612,10 +612,11 @@ public final class OpenGaussDDLStatementVisitor extends 
OpenGaussStatementVisito
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setIfExists(null != ctx.ifExists());
-        
result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>)
 visit(ctx.qualifiedNameList())).getValue()));
-        return result;
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .ifExists(null != ctx.ifExists())
+                
.indexes(createIndexSegments(((CollectionValue<SimpleTableSegment>) 
visit(ctx.qualifiedNameList())).getValue()))
+                .build();
     }
     
     private Collection<IndexSegment> createIndexSegments(final 
Collection<SimpleTableSegment> tableSegments) {
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 5f03aa41c54..e2f5ff35340 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
@@ -878,9 +878,10 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
     
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
-        return result;
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .indexes(Collections.singleton((IndexSegment) 
visit(ctx.indexName())))
+                .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 4968c342834..353e92f1397 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
@@ -754,10 +754,11 @@ public final class PostgreSQLDDLStatementVisitor extends 
PostgreSQLStatementVisi
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setIfExists(null != ctx.ifExists());
-        
result.getIndexes().addAll(createIndexSegments(((CollectionValue<SimpleTableSegment>)
 visit(ctx.qualifiedNameList())).getValue()));
-        return result;
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .ifExists(null != ctx.ifExists())
+                
.indexes(createIndexSegments(((CollectionValue<SimpleTableSegment>) 
visit(ctx.qualifiedNameList())).getValue()))
+                .build();
     }
     
     private Collection<IndexSegment> createIndexSegments(final 
Collection<SimpleTableSegment> tableSegments) {
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 8bc16930e4b..26f48476634 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
@@ -353,11 +353,12 @@ public final class SQLServerDDLStatementVisitor extends 
SQLServerStatementVisito
     
     @Override
     public ASTNode visitDropIndex(final DropIndexContext ctx) {
-        DropIndexStatement result = 
DropIndexStatement.builder().databaseType(getDatabaseType()).build();
-        result.setIfExists(null != ctx.ifExists());
-        result.getIndexes().add((IndexSegment) visit(ctx.indexName()));
-        result.setSimpleTable((SimpleTableSegment) visit(ctx.tableName()));
-        return result;
+        return DropIndexStatement.builder()
+                .databaseType(getDatabaseType())
+                .ifExists(null != ctx.ifExists())
+                .indexes(Collections.singleton((IndexSegment) 
visit(ctx.indexName())))
+                .simpleTable((SimpleTableSegment) visit(ctx.tableName()))
+                .build();
     }
     
     @Override
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/DropIndexStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/DropIndexStatement.java
index 2924ce334bd..c82adc5c8d0 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/DropIndexStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/index/DropIndexStatement.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.i
 
 import lombok.Builder;
 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.ddl.table.AlgorithmTypeSegment;
@@ -33,31 +32,36 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DD
 
 import java.util.Collection;
 import java.util.Collections;
-import java.util.LinkedList;
 import java.util.Optional;
 
 /**
  * Drop index statement.
  */
 @Getter
-@Setter
 public final class DropIndexStatement extends DDLStatement {
     
-    private final Collection<IndexSegment> indexes = new LinkedList<>();
+    private final Collection<IndexSegment> indexes;
     
-    private boolean ifExists;
+    private final boolean ifExists;
     
-    private SimpleTableSegment simpleTable;
+    private final SimpleTableSegment simpleTable;
     
-    private AlgorithmTypeSegment algorithmType;
+    private final AlgorithmTypeSegment algorithmType;
     
-    private LockTableSegment lockTable;
+    private final LockTableSegment lockTable;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
     @Builder
-    private DropIndexStatement(final DatabaseType databaseType) {
+    private DropIndexStatement(final DatabaseType databaseType, final 
Collection<IndexSegment> indexes, final boolean ifExists,
+                               final SimpleTableSegment simpleTable, final 
AlgorithmTypeSegment algorithmType, final LockTableSegment lockTable) {
         super(databaseType);
+        this.indexes = null == indexes ? Collections.emptyList() : indexes;
+        this.ifExists = ifExists;
+        this.simpleTable = simpleTable;
+        this.algorithmType = algorithmType;
+        this.lockTable = lockTable;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(simpleTable), new 
DropIndexIndexSQLStatementAttribute());
     }
     
     /**
@@ -89,7 +93,6 @@ public final class DropIndexStatement extends DDLStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(simpleTable), new 
DropIndexIndexSQLStatementAttribute());
     }
     
     private class DropIndexIndexSQLStatementAttribute implements 
IndexSQLStatementAttribute {

Reply via email to