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 {