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 73d0af8ddf2 Refactor constructor of DropTableStatement to empty 
buildAttributes (#38329)
73d0af8ddf2 is described below

commit 73d0af8ddf2c3c5fa0ea4f775e049b026b4fe145
Author: Liang Zhang <[email protected]>
AuthorDate: Wed Mar 4 12:20:15 2026 +0800

    Refactor constructor of DropTableStatement to empty buildAttributes (#38329)
    
    * Refactor constructor of DropTableStatement to empty buildAttributes
    
    * Refactor constructor of DropTableStatement to empty buildAttributes
---
 .../ddl/ShardingDropTableSupportedCheckerTest.java |  7 ++--
 .../ShardingDropTableRouteContextCheckerTest.java  | 41 +++++++---------------
 .../statement/ddl/DropTableStatementBinder.java    |  5 +--
 .../DropTablePushDownMetaDataRefresherTest.java    |  6 ++--
 .../statement/type/DorisDDLStatementVisitor.java   |  5 +--
 .../type/FirebirdDDLStatementVisitor.java          |  4 +--
 .../statement/type/HiveDDLStatementVisitor.java    |  5 +--
 .../statement/type/MySQLDDLStatementVisitor.java   |  5 +--
 .../type/OpenGaussDDLStatementVisitor.java         |  6 +---
 .../statement/type/OracleDDLStatementVisitor.java  |  4 +--
 .../type/PostgreSQLDDLStatementVisitor.java        |  6 +---
 .../statement/type/PrestoDDLStatementVisitor.java  |  5 +--
 .../statement/type/SQL92DDLStatementVisitor.java   |  4 +--
 .../type/SQLServerDDLStatementVisitor.java         |  5 +--
 .../type/ddl/table/DropTableStatement.java         | 18 +++++-----
 15 files changed, 39 insertions(+), 87 deletions(-)

diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropTableSupportedCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropTableSupportedCheckerTest.java
index 272067a466a..bbbb2e9cd44 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropTableSupportedCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/checker/sql/ddl/ShardingDropTableSupportedCheckerTest.java
@@ -38,6 +38,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.mockito.junit.jupiter.MockitoSettings;
 import org.mockito.quality.Strictness;
 
+import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
@@ -67,10 +68,8 @@ class ShardingDropTableSupportedCheckerTest {
     
     @Test
     void assertCheck() {
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_item")));
-        sqlStatement.getTables().add(table);
-        sqlStatement.buildAttributes();
+        DropTableStatement sqlStatement = new DropTableStatement(
+                databaseType, Collections.singleton(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_item")))), false, false);
         SQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropTableRouteContextCheckerTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropTableRouteContextCheckerTest.java
index 04aecbdd31b..0f7963ebab1 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropTableRouteContextCheckerTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/route/engine/checker/ddl/ShardingDropTableRouteContextCheckerTest.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.sharding.route.engine.checker.ddl;
 
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.binder.context.statement.type.CommonSQLStatementContext;
-import org.apache.shardingsphere.infra.config.props.ConfigurationProperties;
 import org.apache.shardingsphere.infra.datanode.DataNode;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import org.apache.shardingsphere.infra.route.context.RouteContext;
@@ -83,10 +82,6 @@ class ShardingDropTableRouteContextCheckerTest {
     
     @Test
     void assertCheckWhenDropTableInUsed() {
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_item")));
-        sqlStatement.getTables().add(table);
-        sqlStatement.buildAttributes();
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
         when(database.getName()).thenReturn("db_schema");
         
when(database.getSchema("db_schema").containsTable("t_order_item")).thenReturn(true);
@@ -99,8 +94,9 @@ class ShardingDropTableRouteContextCheckerTest {
         routeUnits.add(routeUnit);
         RouteContext routeContext = mock(RouteContext.class);
         when(routeContext.getRouteUnits()).thenReturn(routeUnits);
-        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(sqlStatement));
-        assertThrows(InUsedTablesException.class, () -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
database, mock(ConfigurationProperties.class), routeContext));
+        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(new DropTableStatement(
+                databaseType, Collections.singleton(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order_item")))), false, false)));
+        assertThrows(InUsedTablesException.class, () -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
database, mock(), routeContext));
     }
     
     private ShardingTable createShardingTable(final String tableName) {
@@ -124,50 +120,39 @@ class ShardingDropTableRouteContextCheckerTest {
     
     @Test
     void assertCheckWithSameRouteResultShardingTableForPostgreSQL() {
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order")));
-        sqlStatement.getTables().add(table);
-        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"));
         Collection<RouteUnit> routeUnits = new LinkedList<>();
         routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), 
Collections.singleton(new RouteMapper("t_order", "t_order_0"))));
         routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), 
Collections.singleton(new RouteMapper("t_order", "t_order_0"))));
         when(routeContext.getRouteUnits()).thenReturn(routeUnits);
-        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(sqlStatement));
-        assertDoesNotThrow(() -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS),
-                mock(ConfigurationProperties.class), routeContext));
+        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(new DropTableStatement(
+                databaseType, Collections.singleton(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order")))), false, false)));
+        assertDoesNotThrow(() -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS), mock(), routeContext));
     }
     
     @Test
     void assertCheckWithDifferentRouteResultShardingTableForPostgreSQL() {
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order")));
-        sqlStatement.getTables().add(table);
-        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"));
         Collection<RouteUnit> routeUnits = new LinkedList<>();
         routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), 
Collections.singleton(new RouteMapper("t_order", "t_order_0"))));
         when(routeContext.getRouteUnits()).thenReturn(routeUnits);
-        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(sqlStatement));
-        assertThrows(ShardingDDLRouteException.class, () -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS),
-                mock(ConfigurationProperties.class), routeContext));
+        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(new DropTableStatement(
+                databaseType, Collections.singleton(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order")))), false, false)));
+        assertThrows(ShardingDDLRouteException.class, () -> new 
ShardingDropTableRouteContextChecker().check(
+                shardingRule, queryContext, mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS), mock(), routeContext));
     }
     
     @Test
     void assertCheckWithSameRouteResultBroadcastTableForPostgreSQL() {
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        SimpleTableSegment table = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_config")));
-        sqlStatement.getTables().add(table);
-        sqlStatement.buildAttributes();
         when(shardingRule.getShardingTable("t_config")).thenReturn(new 
ShardingTable(Arrays.asList("ds_0", "ds_1"), "t_config"));
         Collection<RouteUnit> routeUnits = new LinkedList<>();
         routeUnits.add(new RouteUnit(new RouteMapper("ds_0", "ds_0"), 
Collections.singleton(new RouteMapper("t_config", "t_config"))));
         routeUnits.add(new RouteUnit(new RouteMapper("ds_1", "ds_1"), 
Collections.singleton(new RouteMapper("t_config", "t_config"))));
         when(routeContext.getRouteUnits()).thenReturn(routeUnits);
-        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(sqlStatement));
-        assertDoesNotThrow(() -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS),
-                mock(ConfigurationProperties.class), routeContext));
+        when(queryContext.getSqlStatementContext()).thenReturn(new 
CommonSQLStatementContext(new DropTableStatement(
+                databaseType, Collections.singleton(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_config")))), false, false)));
+        assertDoesNotThrow(() -> new 
ShardingDropTableRouteContextChecker().check(shardingRule, queryContext, 
mock(ShardingSphereDatabase.class, RETURNS_DEEP_STUBS), mock(), routeContext));
     }
 }
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
index 896292c988d..cc4a8e8bac0 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/ddl/DropTableStatementBinder.java
@@ -41,10 +41,7 @@ public final class DropTableStatementBinder implements 
SQLStatementBinder<DropTa
     }
     
     private DropTableStatement copy(final DropTableStatement sqlStatement, 
final Collection<SimpleTableSegment> boundTables) {
-        DropTableStatement result = new 
DropTableStatement(sqlStatement.getDatabaseType());
-        result.getTables().addAll(boundTables);
-        result.setIfExists(sqlStatement.isIfExists());
-        result.setContainsCascade(sqlStatement.isContainsCascade());
+        DropTableStatement result = new 
DropTableStatement(sqlStatement.getDatabaseType(), boundTables, 
sqlStatement.isIfExists(), sqlStatement.isContainsCascade());
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
         return result;
     }
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/DropTablePushDownMetaDataRefresherTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/DropTablePushDownMetaDataRefresherTest.java
index 1bdde689764..398fad4eb5d 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/DropTablePushDownMetaDataRefresherTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/pushdown/type/table/DropTablePushDownMetaDataRefresherTest.java
@@ -54,9 +54,9 @@ class DropTablePushDownMetaDataRefresherTest {
     void assertRefresh() {
         ShardingSphereDatabase database = new ShardingSphereDatabase(
                 "foo_db", databaseType, new 
ResourceMetaData(Collections.emptyMap()), new 
RuleMetaData(Collections.emptyList()), Collections.emptyList());
-        DropTableStatement sqlStatement = new DropTableStatement(databaseType);
-        sqlStatement.getTables().add(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("foo_tbl"))));
-        sqlStatement.getTables().add(new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("bar_tbl"))));
+        DropTableStatement sqlStatement = new DropTableStatement(databaseType, 
Arrays.asList(
+                new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("foo_tbl"))), new SimpleTableSegment(new TableNameSegment(0, 0, 
new IdentifierValue("bar_tbl")))),
+                false, false);
         refresher.refresh(metaDataManagerPersistService, database, "logic_ds", 
"foo_schema", databaseType, sqlStatement, new ConfigurationProperties(new 
Properties()));
         verify(metaDataManagerPersistService).dropTables(database, 
"foo_schema", Arrays.asList("foo_tbl", "bar_tbl"));
     }
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 41977a1ba95..ef6cdcfe003 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
@@ -1139,10 +1139,7 @@ public final class DorisDDLStatementVisitor extends 
DorisStatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableList())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue(), null 
!= ctx.ifExists(), false);
     }
     
     @Override
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 921e6a657e9..d4eae29bbc8 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
@@ -259,9 +259,7 @@ public final class FirebirdDDLStatementVisitor extends 
FirebirdStatementVisitor
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableNames())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue(), 
false, false);
     }
     
     @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 ae126411475..345fd02a144 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
@@ -164,10 +164,7 @@ public final class HiveDDLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.getTables().add((SimpleTableSegment) 
visit(ctx.tableNameWithDb()));
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
Collections.singleton((SimpleTableSegment) visit(ctx.tableNameWithDb())), null 
!= ctx.ifExists(), false);
     }
     
     @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 afe2540ed31..621c9e141dd 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
@@ -693,10 +693,7 @@ public final class MySQLDDLStatementVisitor extends 
MySQLStatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableList())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue(), null 
!= ctx.ifExists(), false);
     }
     
     @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 0602de03b5e..2a8f4e52149 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
@@ -521,11 +521,7 @@ public final class OpenGaussDDLStatementVisitor extends 
OpenGaussStatementVisito
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
         boolean containsCascade = null != ctx.dropTableOpt() && null != 
ctx.dropTableOpt().CASCADE();
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.setContainsCascade(containsCascade);
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableNames())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue(), 
null != ctx.ifExists(), containsCascade);
     }
     
     @SuppressWarnings("unchecked")
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 e2f5ff35340..5b04a22ecce 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
@@ -735,9 +735,7 @@ public final class OracleDDLStatementVisitor extends 
OracleStatementVisitor impl
     
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.getTables().add((SimpleTableSegment) visit(ctx.tableName()));
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
Collections.singleton((SimpleTableSegment) visit(ctx.tableName())), false, 
false);
     }
     
     @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 353e92f1397..53abb5a0014 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
@@ -638,11 +638,7 @@ public final class PostgreSQLDDLStatementVisitor extends 
PostgreSQLStatementVisi
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
         boolean containsCascade = null != ctx.dropTableOpt() && null != 
ctx.dropTableOpt().CASCADE();
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.setContainsCascade(containsCascade);
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableNames())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue(), 
null != ctx.ifExists(), containsCascade);
     }
     
     @SuppressWarnings("unchecked")
diff --git 
a/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
 
b/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
index 19907b519f8..6594d674b45 100644
--- 
a/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDDLStatementVisitor.java
@@ -134,10 +134,7 @@ public final class PrestoDDLStatementVisitor extends 
PrestoStatementVisitor impl
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setIfExists(null != ctx.ifExists());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableList())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableList())).getValue(), null 
!= ctx.ifExists(), false);
     }
     
     @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 9e4a1ef7868..9d07a378705 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
@@ -228,8 +228,6 @@ public final class SQL92DDLStatementVisitor extends 
SQL92StatementVisitor implem
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableNames())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue(), 
false, false);
     }
 }
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 26f48476634..fe4b73c8a8a 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
@@ -319,10 +319,7 @@ public final class SQLServerDDLStatementVisitor extends 
SQLServerStatementVisito
     @SuppressWarnings("unchecked")
     @Override
     public ASTNode visitDropTable(final DropTableContext ctx) {
-        DropTableStatement result = new DropTableStatement(getDatabaseType());
-        result.setContainsCascade(null != ctx.ifExists());
-        result.getTables().addAll(((CollectionValue<SimpleTableSegment>) 
visit(ctx.tableNames())).getValue());
-        return result;
+        return new DropTableStatement(getDatabaseType(), 
((CollectionValue<SimpleTableSegment>) visit(ctx.tableNames())).getValue(), 
null != ctx.ifExists(), false);
     }
     
     @Override
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/DropTableStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/DropTableStatement.java
index b07d790f050..e578d9dea81 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/DropTableStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/ddl/table/DropTableStatement.java
@@ -18,7 +18,6 @@
 package 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.table;
 
 import lombok.Getter;
-import lombok.Setter;
 import org.apache.shardingsphere.database.connector.core.type.DatabaseType;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.SQLStatementAttributes;
@@ -26,29 +25,30 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.statement.attribute.t
 import 
org.apache.shardingsphere.sql.parser.statement.core.statement.type.ddl.DDLStatement;
 
 import java.util.Collection;
-import java.util.LinkedList;
 
 /**
  * Drop table statement.
  */
 @Getter
-@Setter
 public final class DropTableStatement extends DDLStatement {
     
-    private final Collection<SimpleTableSegment> tables = new LinkedList<>();
+    private final Collection<SimpleTableSegment> tables;
     
-    private boolean ifExists;
+    private final boolean ifExists;
     
-    private boolean containsCascade;
+    private final boolean containsCascade;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
-    public DropTableStatement(final DatabaseType databaseType) {
+    public DropTableStatement(final DatabaseType databaseType, final 
Collection<SimpleTableSegment> tables, final boolean ifExists, final boolean 
containsCascade) {
         super(databaseType);
+        this.tables = tables;
+        this.ifExists = ifExists;
+        this.containsCascade = containsCascade;
+        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables));
     }
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
TableSQLStatementAttribute(tables));
     }
 }

Reply via email to