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 00af3f27e7f Refactor constructor of DeleteStatement to empty 
buildAttributes (#38322)
00af3f27e7f is described below

commit 00af3f27e7f6232ce6441926137a0b84c579d157
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Mar 3 23:38:34 2026 +0800

    Refactor constructor of DeleteStatement to empty buildAttributes (#38322)
---
 .../core/advice/SQLRouteCountAdviceTest.java       |  2 +-
 .../statement/dml/DeleteStatementBinder.java       | 16 ++++----
 .../type/dml/DeleteStatementContextTest.java       |  4 +-
 .../statement/dml/DeleteStatementBinderTest.java   | 10 +++--
 .../ast/converter/SQLNodeConverterEngineTest.java  |  2 +-
 .../type/DeleteStatementConverterTest.java         | 46 +++++++++++-----------
 .../type/ExplainStatementConverterTest.java        |  4 +-
 .../refresher/util/SchemaRefreshUtilsTest.java     |  2 +-
 .../type/ClickHouseDMLStatementVisitor.java        | 10 ++---
 .../visitor/statement/DorisStatementVisitor.java   | 17 ++++----
 .../type/FirebirdDMLStatementVisitor.java          | 12 +++---
 .../statement/type/HiveDMLStatementVisitor.java    | 16 ++++----
 .../visitor/statement/MySQLStatementVisitor.java   | 21 +++++-----
 .../statement/OpenGaussStatementVisitor.java       | 10 ++---
 .../statement/type/OracleDMLStatementVisitor.java  | 15 +++----
 .../statement/PostgreSQLStatementVisitor.java      | 10 ++---
 .../statement/type/PrestoDMLStatementVisitor.java  | 17 ++++----
 .../statement/type/SQL92DMLStatementVisitor.java   | 10 ++---
 .../statement/SQLServerStatementVisitor.java       | 20 +++++-----
 .../core/statement/type/dml/DeleteStatement.java   | 32 +++++++++------
 .../statement/core/util/MultiSQLSplitterTest.java  |  6 +--
 .../admin/FirebirdAdminExecutorCreatorTest.java    |  2 +-
 .../admin/MySQLAdminExecutorCreatorTest.java       |  2 +-
 .../admin/PostgreSQLAdminExecutorCreatorTest.java  |  2 +-
 24 files changed, 150 insertions(+), 138 deletions(-)

diff --git 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
index e3d059277e7..2379b826e0c 100644
--- 
a/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
+++ 
b/agent/plugins/metrics/core/src/test/java/org/apache/shardingsphere/agent/plugin/metrics/core/advice/SQLRouteCountAdviceTest.java
@@ -73,7 +73,7 @@ class SQLRouteCountAdviceTest {
         return Stream.of(
                 Arguments.of("INSERT", createQueryContext(new 
InsertStatement(DATABASE_TYPE))),
                 Arguments.of("UPDATE", createQueryContext(new 
UpdateStatement(DATABASE_TYPE))),
-                Arguments.of("DELETE", createQueryContext(new 
DeleteStatement(DATABASE_TYPE))),
+                Arguments.of("DELETE", 
createQueryContext(DeleteStatement.builder().databaseType(DATABASE_TYPE).build())),
                 Arguments.of("SELECT", createQueryContext(new 
SelectStatement(DATABASE_TYPE))));
     }
     
diff --git 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
index fbd0257060c..9a18beb17e0 100644
--- 
a/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
+++ 
b/infra/binder/core/src/main/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinder.java
@@ -51,13 +51,15 @@ public final class DeleteStatementBinder implements 
SQLStatementBinder<DeleteSta
     }
     
     private DeleteStatement copy(final DeleteStatement sqlStatement, final 
WithSegment boundWith, final TableSegment boundTable, final WhereSegment 
boundWhere, final OrderBySegment boundOrderBy) {
-        DeleteStatement result = new 
DeleteStatement(sqlStatement.getDatabaseType());
-        result.setWith(boundWith);
-        result.setTable(boundTable);
-        result.setWhere(boundWhere);
-        result.setOrderBy(boundOrderBy);
-        sqlStatement.getLimit().ifPresent(result::setLimit);
-        sqlStatement.getOutput().ifPresent(result::setOutput);
+        DeleteStatement result = DeleteStatement.builder()
+                .databaseType(sqlStatement.getDatabaseType())
+                .with(boundWith)
+                .table(boundTable)
+                .where(boundWhere)
+                .orderBy(boundOrderBy)
+                .limit(sqlStatement.getLimit().orElse(null))
+                .output(sqlStatement.getOutput().orElse(null))
+                .build();
         SQLStatementCopyUtils.copyAttributes(sqlStatement, result);
         return result;
     }
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/DeleteStatementContextTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/DeleteStatementContextTest.java
index 6cbeba34a84..088fcf02704 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/DeleteStatementContextTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/context/statement/type/dml/DeleteStatementContextTest.java
@@ -45,14 +45,12 @@ class DeleteStatementContextTest {
     
     @Test
     void assertNewInstance() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
         WhereSegment whereSegment = mock(WhereSegment.class);
         when(whereSegment.getExpr()).thenReturn(mock(ExpressionSegment.class));
-        deleteStatement.setWhere(whereSegment);
         JoinTableSegment tableSegment = new JoinTableSegment();
         tableSegment.setLeft(new 
SimpleTableSegment(createTableNameSegment("foo_tbl")));
         tableSegment.setRight(new 
SimpleTableSegment(createTableNameSegment("bar_tbl")));
-        deleteStatement.setTable(tableSegment);
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(tableSegment).where(whereSegment).build();
         DeleteStatementContext actual = new 
DeleteStatementContext(deleteStatement);
         assertThat(actual.getTablesContext().getTableNames(), is(new 
HashSet<>(Arrays.asList("foo_tbl", "bar_tbl"))));
         assertThat(actual.getWhereSegments(), 
is(Collections.singletonList(whereSegment)));
diff --git 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
index 41fafc83ae7..7b8d1e56fef 100644
--- 
a/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
+++ 
b/infra/binder/core/src/test/java/org/apache/shardingsphere/infra/binder/engine/statement/dml/DeleteStatementBinderTest.java
@@ -52,11 +52,13 @@ class DeleteStatementBinderTest {
     
     @Test
     void assertBind() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
         SimpleTableSegment simpleTableSegment = new SimpleTableSegment(new 
TableNameSegment(0, 0, new IdentifierValue("t_order")));
-        deleteStatement.setTable(simpleTableSegment);
-        deleteStatement.setWhere(new WhereSegment(0, 0, new 
BinaryOperationExpression(0, 0, new ColumnSegment(0, 0, new 
IdentifierValue("status")),
-                new LiteralExpressionSegment(0, 0, 0), "=", "status = 1")));
+        DeleteStatement deleteStatement = DeleteStatement.builder()
+                .databaseType(databaseType)
+                .table(simpleTableSegment)
+                .where(new WhereSegment(0, 0, new BinaryOperationExpression(0, 
0, new ColumnSegment(0, 0, new IdentifierValue("status")),
+                        new LiteralExpressionSegment(0, 0, 0), "=", "status = 
1")))
+                .build();
         DeleteStatement actual = new 
DeleteStatementBinder().bind(deleteStatement, new 
SQLStatementBinderContext(createMetaData(), "foo_db", new HintValueContext(), 
deleteStatement));
         assertThat(actual, not(deleteStatement));
         assertThat(actual.getTable(), not(deleteStatement.getTable()));
diff --git 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/SQLNodeConverterEngineTest.java
 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/SQLNodeConverterEngineTest.java
index 80636ef6b46..502acdf0a76 100644
--- 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/SQLNodeConverterEngineTest.java
+++ 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/SQLNodeConverterEngineTest.java
@@ -63,7 +63,7 @@ class SQLNodeConverterEngineTest {
         try (
                 MockedConstruction<DeleteStatementConverter> ignored = 
mockConstruction(DeleteStatementConverter.class,
                         (mock, context) -> 
when(mock.convert(any(DeleteStatement.class))).thenReturn(deleteSqlNode))) {
-            assertThat(SQLNodeConverterEngine.convert(new 
DeleteStatement(databaseType)), is(deleteSqlNode));
+            
assertThat(SQLNodeConverterEngine.convert(DeleteStatement.builder().databaseType(databaseType).build()),
 is(deleteSqlNode));
         }
         SqlNode updateSqlNode = mock(SqlNode.class);
         try (
diff --git 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/DeleteStatementConverterTest.java
 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/DeleteStatementConverterTest.java
index c53aa91f19c..2977d088776 100644
--- 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/DeleteStatementConverterTest.java
+++ 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/DeleteStatementConverterTest.java
@@ -74,8 +74,7 @@ class DeleteStatementConverterTest {
     
     @Test
     void assertConvertSingleTableWithoutOrderByAndLimit() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(createSimpleTableSegment("t_order"));
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(createSimpleTableSegment("t_order")).build();
         SqlDelete actual = (SqlDelete) new 
DeleteStatementConverter().convert(deleteStatement);
         assertThat(((SqlIdentifier) actual.getTargetTable()).getSimple(), 
is("t_order"));
         assertNull(actual.getCondition());
@@ -84,10 +83,12 @@ class DeleteStatementConverterTest {
     
     @Test
     void assertConvertSingleTableWithAliasAndOrderBy() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(createSimpleTableSegmentWithAlias("t_order", 
"do"));
-        deleteStatement.setWhere(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)));
-        deleteStatement.setOrderBy(createOrderBySegment());
+        DeleteStatement deleteStatement = DeleteStatement.builder()
+                .databaseType(databaseType)
+                .table(createSimpleTableSegmentWithAlias("t_order", "do"))
+                .where(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)))
+                .orderBy(createOrderBySegment())
+                .build();
         SqlOrderBy actual = (SqlOrderBy) new 
DeleteStatementConverter().convert(deleteStatement);
         assertThat(actual.query, isA(SqlDelete.class));
         SqlDelete sqlDelete = (SqlDelete) actual.query;
@@ -100,10 +101,8 @@ class DeleteStatementConverterTest {
     
     @Test
     void assertConvertSingleTableWithLimit() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(createSimpleTableSegment("t_order"));
         LimitSegment limit = new LimitSegment(0, 0, new 
NumberLiteralLimitValueSegment(0, 0, 1L), new 
ParameterMarkerLimitValueSegment(0, 0, 0));
-        deleteStatement.setLimit(limit);
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(createSimpleTableSegment("t_order")).limit(limit).build();
         SqlOrderBy actual = (SqlOrderBy) new 
DeleteStatementConverter().convert(deleteStatement);
         assertThat(actual.offset, isA(SqlLiteral.class));
         assertNotNull(actual.offset);
@@ -124,10 +123,12 @@ class DeleteStatementConverterTest {
         actualDeleteTables.add(tableWithOwner);
         actualDeleteTables.add(createSimpleTableSegment("DUAL"));
         multiTableSegment.setActualDeleteTables(actualDeleteTables);
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(multiTableSegment);
-        deleteStatement.setWhere(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)));
-        deleteStatement.setWith(createWithSegment());
+        DeleteStatement deleteStatement = DeleteStatement.builder()
+                .databaseType(databaseType)
+                .table(multiTableSegment)
+                .where(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)))
+                .with(createWithSegment())
+                .build();
         SqlWith actual = (SqlWith) new 
DeleteStatementConverter().convert(deleteStatement);
         SqlDelete sqlDelete = (SqlDelete) actual.body;
         assertThat(((SqlIdentifier) sqlDelete.getTargetTable()).getSimple(), 
is("left_table"));
@@ -144,8 +145,7 @@ class DeleteStatementConverterTest {
         SimpleTableSegment relationTable = 
createSimpleTableSegment("target_table");
         multiTableSegment.setRelationTable(relationTable);
         
multiTableSegment.setActualDeleteTables(Collections.singletonList(createSimpleTableSegment("target_table")));
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(multiTableSegment);
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(multiTableSegment).build();
         SqlDelete actual = (SqlDelete) new 
DeleteStatementConverter().convert(deleteStatement);
         assertThat(((SqlIdentifier) actual.getTargetTable()).getSimple(), 
is("target_table"));
         assertNotNull(actual.getAlias());
@@ -154,10 +154,12 @@ class DeleteStatementConverterTest {
     
     @Test
     void assertConvertSingleTableWithWithSegment() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(createSimpleTableSegment("t_order"));
-        deleteStatement.setWhere(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)));
-        deleteStatement.setWith(createWithSegment());
+        DeleteStatement deleteStatement = DeleteStatement.builder()
+                .databaseType(databaseType)
+                .table(createSimpleTableSegment("t_order"))
+                .where(new WhereSegment(0, 0, new 
ParameterMarkerExpressionSegment(0, 0, 0)))
+                .with(createWithSegment())
+                .build();
         SqlWith actual = (SqlWith) new 
DeleteStatementConverter().convert(deleteStatement);
         SqlDelete sqlDelete = (SqlDelete) actual.body;
         assertThat(((SqlIdentifier) sqlDelete.getTargetTable()).getSimple(), 
is("t_order"));
@@ -173,16 +175,14 @@ class DeleteStatementConverterTest {
         doAnswer((Answer<Void>) invocation -> 
null).when(tables).forEach(any());
         multiTableSegment.setActualDeleteTables(tables);
         
multiTableSegment.setRelationTable(createSimpleTableSegmentWithAlias("target_table",
 "t"));
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(multiTableSegment);
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(multiTableSegment).build();
         SqlDelete actual = (SqlDelete) new 
DeleteStatementConverter().convert(deleteStatement);
         assertNull(actual.getAlias());
     }
     
     @Test
     void assertConvertSingleTableWithoutTargetTable() {
-        DeleteStatement deleteStatement = new DeleteStatement(databaseType);
-        deleteStatement.setTable(createSimpleTableSegment("DUAL"));
+        DeleteStatement deleteStatement = 
DeleteStatement.builder().databaseType(databaseType).table(createSimpleTableSegment("DUAL")).build();
         assertThrows(IllegalStateException.class, () -> new 
DeleteStatementConverter().convert(deleteStatement));
     }
     
diff --git 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/ExplainStatementConverterTest.java
 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/ExplainStatementConverterTest.java
index 567e8cb0355..e0f19151907 100644
--- 
a/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/ExplainStatementConverterTest.java
+++ 
b/kernel/sql-federation/compiler/src/test/java/org/apache/shardingsphere/sqlfederation/compiler/sql/ast/converter/statement/type/ExplainStatementConverterTest.java
@@ -94,9 +94,7 @@ class ExplainStatementConverterTest {
     }
     
     private DeleteStatement createDeleteStatement() {
-        DeleteStatement result = new DeleteStatement(databaseType);
-        result.setTable(new SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_delete"))));
-        return result;
+        return DeleteStatement.builder().databaseType(databaseType).table(new 
SimpleTableSegment(new TableNameSegment(0, 0, new 
IdentifierValue("t_delete")))).build();
     }
     
     private UpdateStatement createUpdateStatement() {
diff --git 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/util/SchemaRefreshUtilsTest.java
 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/util/SchemaRefreshUtilsTest.java
index b1977d718b2..a115d4c6699 100644
--- 
a/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/util/SchemaRefreshUtilsTest.java
+++ 
b/mode/core/src/test/java/org/apache/shardingsphere/mode/metadata/refresher/util/SchemaRefreshUtilsTest.java
@@ -49,7 +49,7 @@ class SchemaRefreshUtilsTest {
         when(tablesContext.getSchemaName()).thenReturn(Optional.empty());
         SQLStatementContext sqlStatementContext = 
mock(SQLStatementContext.class);
         when(sqlStatementContext.getTablesContext()).thenReturn(tablesContext);
-        when(sqlStatementContext.getSqlStatement()).thenReturn(new 
DeleteStatement(TypedSPILoader.getService(DatabaseType.class, "FIXTURE")));
+        
when(sqlStatementContext.getSqlStatement()).thenReturn(DeleteStatement.builder().databaseType(TypedSPILoader.getService(DatabaseType.class,
 "FIXTURE")).build());
         ShardingSphereDatabase database = mock(ShardingSphereDatabase.class);
         when(database.getName()).thenReturn("FOO_DB");
         assertThat(SchemaRefreshUtils.getSchemaName(database, 
sqlStatementContext), is("foo_db"));
diff --git 
a/parser/sql/engine/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
index 2581a8bcfd9..a3d742fc627 100644
--- 
a/parser/sql/engine/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/clickhouse/src/main/java/org/apache/shardingsphere/sql/parser/engine/clickhouse/visitor/statement/type/ClickHouseDMLStatementVisitor.java
@@ -148,13 +148,13 @@ public final class ClickHouseDMLStatementVisitor extends 
ClickHouseStatementVisi
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
-        result.setTable((SimpleTableSegment) visit(ctx.tableName()));
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(getDatabaseType()).table((SimpleTableSegment)
 visit(ctx.tableName()));
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
index 32f85f1e9e3..f268d684109 100644
--- 
a/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/doris/src/main/java/org/apache/shardingsphere/sql/parser/engine/doris/visitor/statement/DorisStatementVisitor.java
@@ -1750,23 +1750,24 @@ public abstract class DorisStatementVisitor extends 
DorisStatementBaseVisitor<AS
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(databaseType);
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(databaseType);
         if (null != ctx.multipleTablesClause()) {
-            result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
+            result.table((TableSegment) visit(ctx.multipleTablesClause()));
         } else {
-            result.setTable((TableSegment) visit(ctx.singleTableClause()));
+            result.table((TableSegment) visit(ctx.singleTableClause()));
         }
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
         if (null != ctx.orderByClause()) {
-            result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
+            result.orderBy((OrderBySegment) visit(ctx.orderByClause()));
         }
         if (null != ctx.limitClause()) {
-            result.setLimit((LimitSegment) visit(ctx.limitClause()));
+            result.limit((LimitSegment) visit(ctx.limitClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
index b23cb2689de..c50881609be 100644
--- 
a/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/firebird/src/main/java/org/apache/shardingsphere/sql/parser/engine/firebird/visitor/statement/type/FirebirdDMLStatementVisitor.java
@@ -216,16 +216,16 @@ public final class FirebirdDMLStatementVisitor extends 
FirebirdStatementVisitor
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
-        result.setTable((TableSegment) visit(ctx.singleTableClause()));
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(getDatabaseType()).table((TableSegment) 
visit(ctx.singleTableClause()));
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
         if (null != ctx.returningClause()) {
-            result.setReturning((ReturningSegment) 
visit(ctx.returningClause()));
+            result.returning((ReturningSegment) visit(ctx.returningClause()));
         }
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java
index 1cb5ac65484..69aff4eaf43 100644
--- 
a/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/hive/src/main/java/org/apache/shardingsphere/sql/parser/engine/hive/visitor/statement/type/HiveDMLStatementVisitor.java
@@ -1181,19 +1181,21 @@ public final class HiveDMLStatementVisitor extends 
HiveStatementVisitor implemen
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
-        result.setTable(null == ctx.multipleTablesClause() ? (TableSegment) 
visit(ctx.singleTableClause()) : (TableSegment) 
visit(ctx.multipleTablesClause()));
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder()
+                .databaseType(getDatabaseType())
+                .table(null == ctx.multipleTablesClause() ? (TableSegment) 
visit(ctx.singleTableClause()) : (TableSegment) 
visit(ctx.multipleTablesClause()));
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
         if (null != ctx.orderByClause()) {
-            result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
+            result.orderBy((OrderBySegment) visit(ctx.orderByClause()));
         }
         if (null != ctx.limitClause()) {
-            result.setLimit((LimitSegment) visit(ctx.limitClause()));
+            result.limit((LimitSegment) visit(ctx.limitClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java
 
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java
index 89b7f97bef9..125da708eae 100644
--- 
a/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/mysql/src/main/java/org/apache/shardingsphere/sql/parser/engine/mysql/visitor/statement/MySQLStatementVisitor.java
@@ -1758,29 +1758,30 @@ public abstract class MySQLStatementVisitor extends 
MySQLStatementBaseVisitor<AS
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(databaseType);
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(databaseType);
         if (null != ctx.multipleTablesClause()) {
-            result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
+            result.table((TableSegment) visit(ctx.multipleTablesClause()));
         } else {
-            result.setTable((TableSegment) visit(ctx.singleTableClause()));
+            result.table((TableSegment) visit(ctx.singleTableClause()));
         }
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
         if (null != ctx.orderByClause()) {
-            result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
+            result.orderBy((OrderBySegment) visit(ctx.orderByClause()));
         }
         if (null != ctx.limitClause()) {
-            result.setLimit((LimitSegment) visit(ctx.limitClause()));
+            result.limit((LimitSegment) visit(ctx.limitClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
         if (null != ctx.returningClause()) {
-            result.setReturning((ReturningSegment) 
visit(ctx.returningClause()));
+            result.returning((ReturningSegment) visit(ctx.returningClause()));
         }
         if (null != ctx.withClause()) {
-            result.setWith((WithSegment) visit(ctx.withClause()));
+            result.with((WithSegment) visit(ctx.withClause()));
         }
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java
 
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java
index ea7b38f7885..418bcd1ccb4 100644
--- 
a/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/opengauss/src/main/java/org/apache/shardingsphere/sql/parser/engine/opengauss/visitor/statement/OpenGaussStatementVisitor.java
@@ -917,14 +917,14 @@ public abstract class OpenGaussStatementVisitor extends 
OpenGaussStatementParser
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(databaseType);
         SimpleTableSegment tableSegment = (SimpleTableSegment) 
visit(ctx.relationExprOptAlias());
-        result.setTable(tableSegment);
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(databaseType).table(tableSegment);
         if (null != ctx.whereOrCurrentClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
+            result.where((WhereSegment) visit(ctx.whereOrCurrentClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
index 0c232518f39..b47072662f9 100644
--- 
a/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/oracle/src/main/java/org/apache/shardingsphere/sql/parser/engine/oracle/visitor/statement/type/OracleDMLStatementVisitor.java
@@ -409,17 +409,18 @@ public final class OracleDMLStatementVisitor extends 
OracleStatementVisitor impl
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
-        result.setTable((TableSegment) visit(ctx.deleteSpecification()));
+        TableSegment tableSegment = (TableSegment) 
visit(ctx.deleteSpecification());
         if (null != ctx.alias()) {
-            result.getTable().setAlias((AliasSegment) visit(ctx.alias()));
+            tableSegment.setAlias((AliasSegment) visit(ctx.alias()));
         }
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(getDatabaseType()).table(tableSegment);
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
-        result.addParameterMarkers(ctx.getParent() instanceof ExecuteContext ? 
getGlobalParameterMarkerSegments() : popAllStatementParameterMarkerSegments());
-        result.getVariableNames().addAll(getVariableNames());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(ctx.getParent() instanceof 
ExecuteContext ? getGlobalParameterMarkerSegments() : 
popAllStatementParameterMarkerSegments());
+        deleteStatement.getVariableNames().addAll(getVariableNames());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
 
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
index c4cb6799556..58914e2b2b0 100644
--- 
a/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/postgresql/src/main/java/org/apache/shardingsphere/sql/parser/engine/postgresql/visitor/statement/PostgreSQLStatementVisitor.java
@@ -898,14 +898,14 @@ public abstract class PostgreSQLStatementVisitor extends 
PostgreSQLStatementPars
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(databaseType);
         SimpleTableSegment tableSegment = (SimpleTableSegment) 
visit(ctx.relationExprOptAlias());
-        result.setTable(tableSegment);
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(databaseType).table(tableSegment);
         if (null != ctx.whereOrCurrentClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereOrCurrentClause()));
+            result.where((WhereSegment) visit(ctx.whereOrCurrentClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
 
b/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
index 50dfb9393e0..49048304f0b 100644
--- 
a/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/presto/src/main/java/org/apache/shardingsphere/sql/parser/engine/presto/visitor/statement/type/PrestoDMLStatementVisitor.java
@@ -952,23 +952,24 @@ public final class PrestoDMLStatementVisitor extends 
PrestoStatementVisitor impl
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(getDatabaseType());
         if (null != ctx.multipleTablesClause()) {
-            result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
+            result.table((TableSegment) visit(ctx.multipleTablesClause()));
         } else {
-            result.setTable((TableSegment) visit(ctx.singleTableClause()));
+            result.table((TableSegment) visit(ctx.singleTableClause()));
         }
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
         if (null != ctx.orderByClause()) {
-            result.setOrderBy((OrderBySegment) visit(ctx.orderByClause()));
+            result.orderBy((OrderBySegment) visit(ctx.orderByClause()));
         }
         if (null != ctx.limitClause()) {
-            result.setLimit((LimitSegment) visit(ctx.limitClause()));
+            result.limit((LimitSegment) visit(ctx.limitClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
 
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
index be65a461d93..99ba848d177 100644
--- 
a/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/sql92/src/main/java/org/apache/shardingsphere/sql/parser/engine/sql92/visitor/statement/type/SQL92DMLStatementVisitor.java
@@ -191,13 +191,13 @@ public final class SQL92DMLStatementVisitor extends 
SQL92StatementVisitor implem
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(getDatabaseType());
-        result.setTable((TableSegment) visit(ctx.singleTableClause()));
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(getDatabaseType()).table((TableSegment) 
visit(ctx.singleTableClause()));
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java
 
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java
index 531bb9b5c66..defc4533515 100644
--- 
a/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java
+++ 
b/parser/sql/engine/dialect/sqlserver/src/main/java/org/apache/shardingsphere/sql/parser/engine/sqlserver/visitor/statement/SQLServerStatementVisitor.java
@@ -1734,26 +1734,24 @@ public abstract class SQLServerStatementVisitor extends 
SQLServerStatementBaseVi
     
     @Override
     public ASTNode visitDelete(final DeleteContext ctx) {
-        DeleteStatement result = new DeleteStatement(databaseType);
+        DeleteStatement.DeleteStatementBuilder result = 
DeleteStatement.builder().databaseType(databaseType);
         if (null != ctx.withClause()) {
-            result.setWith((WithSegment) visit(ctx.withClause()));
+            result.with((WithSegment) visit(ctx.withClause()));
         }
         if (null != ctx.multipleTablesClause()) {
-            result.setTable((TableSegment) visit(ctx.multipleTablesClause()));
+            result.table((TableSegment) visit(ctx.multipleTablesClause()));
         } else {
-            result.setTable((TableSegment) visit(ctx.singleTableClause()));
+            result.table((TableSegment) visit(ctx.singleTableClause()));
         }
         if (null != ctx.outputClause()) {
-            result.setOutput((OutputSegment) visit(ctx.outputClause()));
+            result.output((OutputSegment) visit(ctx.outputClause()));
         }
         if (null != ctx.whereClause()) {
-            result.setWhere((WhereSegment) visit(ctx.whereClause()));
-        }
-        if (null != ctx.outputClause()) {
-            result.setOutput((OutputSegment) visit(ctx.outputClause()));
+            result.where((WhereSegment) visit(ctx.whereClause()));
         }
-        result.addParameterMarkers(getParameterMarkerSegments());
-        return result;
+        DeleteStatement deleteStatement = result.build();
+        deleteStatement.addParameterMarkers(getParameterMarkerSegments());
+        return deleteStatement;
     }
     
     @Override
diff --git 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dml/DeleteStatement.java
 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dml/DeleteStatement.java
index 4ffd33e90a0..829b68de010 100644
--- 
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dml/DeleteStatement.java
+++ 
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/statement/type/dml/DeleteStatement.java
@@ -17,8 +17,8 @@
 
 package org.apache.shardingsphere.sql.parser.statement.core.statement.type.dml;
 
+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.dml.ReturningSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.dml.order.OrderBySegment;
@@ -36,27 +36,36 @@ import java.util.Optional;
  * Delete statement.
  */
 @Getter
-@Setter
 public final class DeleteStatement extends DMLStatement {
     
-    private TableSegment table;
+    private final TableSegment table;
     
-    private WhereSegment where;
+    private final WhereSegment where;
     
-    private OrderBySegment orderBy;
+    private final OrderBySegment orderBy;
     
-    private LimitSegment limit;
+    private final LimitSegment limit;
     
-    private WithSegment with;
+    private final WithSegment with;
     
-    private ReturningSegment returning;
+    private final ReturningSegment returning;
     
-    private OutputSegment output;
+    private final OutputSegment output;
     
-    private SQLStatementAttributes attributes;
+    private final SQLStatementAttributes attributes;
     
-    public DeleteStatement(final DatabaseType databaseType) {
+    @Builder
+    private DeleteStatement(final DatabaseType databaseType, final 
TableSegment table, final WhereSegment where,
+                            final OrderBySegment orderBy, final LimitSegment 
limit, final WithSegment with, final ReturningSegment returning, final 
OutputSegment output) {
         super(databaseType);
+        this.table = table;
+        this.where = where;
+        this.orderBy = orderBy;
+        this.limit = limit;
+        this.with = with;
+        this.returning = returning;
+        this.output = output;
+        attributes = new SQLStatementAttributes(new 
WithSQLStatementAttribute(with));
     }
     
     /**
@@ -115,6 +124,5 @@ public final class DeleteStatement extends DMLStatement {
     
     @Override
     public void buildAttributes() {
-        attributes = new SQLStatementAttributes(new 
WithSQLStatementAttribute(with));
     }
 }
diff --git 
a/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/util/MultiSQLSplitterTest.java
 
b/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/util/MultiSQLSplitterTest.java
index feecfb853ba..76bbd131c2d 100644
--- 
a/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/util/MultiSQLSplitterTest.java
+++ 
b/parser/sql/statement/core/src/test/java/org/apache/shardingsphere/sql/parser/statement/core/util/MultiSQLSplitterTest.java
@@ -53,11 +53,11 @@ class MultiSQLSplitterTest {
                         Arrays.asList("   /*comment*/ INSERT INTO t_order 
VALUES (1);", "/*remark*/ insert into t_order values (2)"), true),
                 Arguments.of("updateWithDashComment", new 
UpdateStatement(DATABASE_TYPE),
                         Arrays.asList("-- comment before\r\nupdate t_order set 
status='PAID' where id=1;", "-- \t\nupdate t_order set status='FAIL' where 
id=2;"), true),
-                Arguments.of("deleteWithHashComment", new 
DeleteStatement(DATABASE_TYPE),
+                Arguments.of("deleteWithHashComment", 
DeleteStatement.builder().databaseType(DATABASE_TYPE).build(),
                         Arrays.asList("# comment before\n delete from t_order 
where id=1;", "#\t\n delete from t_order where id=2;"), true),
-                Arguments.of("hashCommentWithCRLF", new 
DeleteStatement(DATABASE_TYPE),
+                Arguments.of("hashCommentWithCRLF", 
DeleteStatement.builder().databaseType(DATABASE_TYPE).build(),
                         Arrays.asList("# comment\r\ndelete from t_order where 
id=1;", "# comment\r\ndelete from t_order where id=2;"), true),
-                Arguments.of("hashCommentWithCROnly", new 
DeleteStatement(DATABASE_TYPE),
+                Arguments.of("hashCommentWithCROnly", 
DeleteStatement.builder().databaseType(DATABASE_TYPE).build(),
                         Arrays.asList("# comment\rdelete from t_order where 
id=1;", "# comment\rdelete from t_order where id=2;"), true),
                 Arguments.of("updateTypeMismatch", new 
UpdateStatement(DATABASE_TYPE), Arrays.asList("update t_order set status='PAID' 
where id=1;", "select * from t_order"), false),
                 Arguments.of("unterminatedBlockComment", new 
InsertStatement(DATABASE_TYPE), Arrays.asList("/* incomplete comment", "insert 
into t_order values (1);"), false),
diff --git 
a/proxy/backend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/backend/firebird/handler/admin/FirebirdAdminExecutorCreatorTest.java
 
b/proxy/backend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/backend/firebird/handler/admin/FirebirdAdminExecutorCreatorTest.java
index 269eeda08ac..4ce727e20ff 100644
--- 
a/proxy/backend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/backend/firebird/handler/admin/FirebirdAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/dialect/firebird/src/test/java/org/apache/shardingsphere/proxy/backend/firebird/handler/admin/FirebirdAdminExecutorCreatorTest.java
@@ -92,6 +92,6 @@ class FirebirdAdminExecutorCreatorTest {
     }
     
     private static SQLStatementContext createOtherStatementContext() {
-        return new DeleteStatementContext(new DeleteStatement(DATABASE_TYPE));
+        return new 
DeleteStatementContext(DeleteStatement.builder().databaseType(DATABASE_TYPE).build());
     }
 }
diff --git 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
index ab64e97e6db..8c1644f6935 100644
--- 
a/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/dialect/mysql/src/test/java/org/apache/shardingsphere/proxy/backend/mysql/handler/admin/MySQLAdminExecutorCreatorTest.java
@@ -418,7 +418,7 @@ class MySQLAdminExecutorCreatorTest {
     
     @Test
     void assertCreateWithDMLStatement() {
-        DeleteStatement sqlStatement = new DeleteStatement(databaseType);
+        DeleteStatement sqlStatement = 
DeleteStatement.builder().databaseType(databaseType).build();
         sqlStatement.buildAttributes();
         SQLStatementContext sqlStatementContext = new 
CommonSQLStatementContext(sqlStatement);
         Optional<DatabaseAdminExecutor> actual = new 
MySQLAdminExecutorCreator().create(sqlStatementContext, "DELETE FROM t", "", 
Collections.emptyList());
diff --git 
a/proxy/backend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
 
b/proxy/backend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
index ef8538e7c53..8ea8a806d30 100644
--- 
a/proxy/backend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
+++ 
b/proxy/backend/dialect/postgresql/src/test/java/org/apache/shardingsphere/proxy/backend/postgresql/handler/admin/PostgreSQLAdminExecutorCreatorTest.java
@@ -146,7 +146,7 @@ class PostgreSQLAdminExecutorCreatorTest {
     
     @Test
     void assertCreateWithDMLStatement() {
-        DeleteStatementContext sqlStatementContext = new 
DeleteStatementContext(new DeleteStatement(databaseType));
+        DeleteStatementContext sqlStatementContext = new 
DeleteStatementContext(DeleteStatement.builder().databaseType(databaseType).build());
         assertThat(new 
PostgreSQLAdminExecutorCreator().create(sqlStatementContext, "DELETE FROM t 
WHERE id = 1", "", Collections.emptyList()), is(Optional.empty()));
     }
 }

Reply via email to