You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2023/10/08 03:17:39 UTC

[shardingsphere] branch master updated: Refactor: test-e2e-sql use the awaitility framework replace sleep in RDLE2EIT class (#27536)

This is an automated email from the ASF dual-hosted git repository.

zhaojinchao 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 db0098eb9ee Refactor: test-e2e-sql use the awaitility framework replace sleep in RDLE2EIT class (#27536)
db0098eb9ee is described below

commit db0098eb9eea763b8a1d0cb79f5751c759acf81f
Author: wyx <78...@users.noreply.github.com>
AuthorDate: Sun Oct 8 11:17:32 2023 +0800

    Refactor: test-e2e-sql use the awaitility framework replace sleep in RDLE2EIT class (#27536)
    
    * Refactor: test-e2e-sql use the awaitility framework replace sleep in RDLE2EIT class (#24106)
    
    * Fix code style
    
    * add SqlCommandType judgment in SingleE2EContainerComposer and  E2ETestParameterGenerator class
    
    * Fix code style
    
    * pollDelay() replace atMost() in the awaitility framework
    
    * Fix code style
    
    ---------
    
    Co-authored-by: wyx <=1...@qq.com>
---
 test/e2e/sql/pom.xml                               |   4 +
 .../engine/arg/E2ETestCaseArgumentsProvider.java   |   2 +-
 .../composer/SingleE2EContainerComposer.java       |  17 +++
 .../test/e2e/engine/type/RDLE2EIT.java             | 119 +++++++++++-------
 .../param/array/E2ETestParameterGenerator.java     |  19 ++-
 .../param/model/AssertionTestParameter.java        |   4 +
 .../alter_binding_rules/alter_binding_rules.xml    |  24 ++++
 ...e_sharding_table_reference_rule_reference_0.xml |  24 ++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 ...p_sharding_table_reference_rule_reference_0.xml |  23 ++++
 .../drop_sharding_table_rule_t_order.xml           |  37 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  37 ++++++
 .../alter_encrypt_rule/alter_encrypt_rule.xml      |  33 +++++
 .../create_encrypt_rule_t_user.xml                 |  33 +++++
 .../drop_encrypt_rule_t_user.xml                   |  32 +++++
 .../alter_mask_rule/alter_mask_rule.xml            |  26 ++++
 .../alter_mask_rule/create_mask_rule_t_mask.xml    |  27 +++++
 .../alter_mask_rule/drop_mask_rule_t_mask.xml      |  25 ++++
 .../alter_sharding_rules/alter_sharding_rules.xml  |  38 ++++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../drop_sharding_table_rule_t_order.xml           |  37 ++++++
 .../alter_single_table_rules.xml                   |  28 +++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 .../drop_sharding_table_rule_t_order.xml           |  37 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  38 ++++++
 .../drop_table_temp_alter.xml                      |  24 ++++
 ...et_default_single_table_storage_unit_=_ds_0.xml |  24 ++++
 ...et_default_single_table_storage_unit_=_ds_1.xml |  24 ++++
 ..._default_single_table_storage_unit_=_random.xml |  24 ++++
 .../create_binding_rules/create_binding_rules.xml  |  24 ++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 ...p_sharding_table_reference_rule_reference_0.xml |  23 ++++
 .../drop_sharding_table_rule_t_order.xml           |  38 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  38 ++++++
 .../create_broadcast_rules.xml                     |  23 ++++
 ...rop_broadcast_table_rule_t_product_category.xml |  22 ++++
 .../create_encrypt_rule/create_encrypt_rule.xml    |  33 +++++
 .../drop_encrypt_rule_t_user.xml                   |  32 +++++
 .../create_mask_rule/create_mask_rule.xml          |  26 ++++
 .../create_mask_rule/drop_mask_rule_t_mask.xml     |  25 ++++
 .../create_sharding_rules.xml                      |  38 ++++++
 .../drop_sharding_table_rule_t_order.xml           |  37 ++++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 .../create_single_table_rules.xml                  |  28 +++++
 .../drop_sharding_table_rule_t_order.xml           |  37 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  38 ++++++
 .../drop_single_table_rules.xml                    |  27 +++++
 .../create_single_table_rules/drop_table_temp.xml  |  24 ++++
 .../set_default_single_table_storage_unit.xml      |  24 ++++
 ..._default_single_table_storage_unit_=_random.xml |  24 ++++
 ...e_sharding_table_reference_rule_reference_0.xml |  24 ++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 .../drop_binding_rules/drop_binding_rules.xml      |  23 ++++
 .../drop_sharding_table_rule_t_order.xml           |  38 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  38 ++++++
 .../create_broadcast_table_rule_t_country.xml      |  23 ++++
 .../drop_broadcast_rules/drop_broadcast_rules.xml  |  22 ++++
 .../create_encrypt_rule_t_user.xml                 |  33 +++++
 .../drop_encrypt_rule/drop_encrypt_rule_t_user.xml |  32 +++++
 .../drop_mask_rule/create_mask_rule_t_mask.xml     |  26 ++++
 .../drop_mask_rule/drop_mask_rule.xml              |  25 ++++
 .../drop_sharding_rules/create_sharding_rules.xml  |  38 ++++++
 .../drop_sharding_rules/drop_sharding_rules.xml    |  37 ++++++
 .../create_sharding_table_rule_t_order.xml         |  39 ++++++
 .../create_sharding_table_rule_t_order_item.xml    |  39 ++++++
 .../drop_sharding_table_rule_t_order.xml           |  38 ++++++
 .../drop_sharding_table_rule_t_order_item.xml      |  38 ++++++
 .../drop_single_table_rules.xml                    |  27 +++++
 .../set_default_single_table_storage_unit.xml      |  24 ++++
 .../resources/cases/rdl/rdl-integration-alter.xml  |  72 +++++++++--
 .../resources/cases/rdl/rdl-integration-create.xml | 133 +++++++++++++++++----
 .../resources/cases/rdl/rdl-integration-drop.xml   |  56 ++++++---
 .../resources/cases/rdl/rdl-integration-set.xml    |  34 +++++-
 78 files changed, 2500 insertions(+), 109 deletions(-)

diff --git a/test/e2e/sql/pom.xml b/test/e2e/sql/pom.xml
index 5d2f2774c52..a9f804dede4 100644
--- a/test/e2e/sql/pom.xml
+++ b/test/e2e/sql/pom.xml
@@ -55,5 +55,9 @@
             <groupId>com.zaxxer</groupId>
             <artifactId>HikariCP</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.awaitility</groupId>
+            <artifactId>awaitility</artifactId>
+        </dependency>
     </dependencies>
 </project>
diff --git a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/arg/E2ETestCaseArgumentsProvider.java b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/arg/E2ETestCaseArgumentsProvider.java
index 07afb9ea6d3..d9f6e8ec53a 100644
--- a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/arg/E2ETestCaseArgumentsProvider.java
+++ b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/arg/E2ETestCaseArgumentsProvider.java
@@ -51,6 +51,6 @@ public final class E2ETestCaseArgumentsProvider implements ArgumentsProvider {
     private Stream<Arguments> getSingleTestCaseArguments(final SQLCommandType type) {
         Collection<AssertionTestParameter> result = E2ETestParameterFactory.getAssertionTestParameters(type);
         // TODO make sure test case can not be null
-        return result.isEmpty() ? Stream.of(Arguments.of(new AssertionTestParameter(null, null, null, null, null, null, null, null))) : result.stream().map(Arguments::of);
+        return result.isEmpty() ? Stream.of(Arguments.of(new AssertionTestParameter(null, null, null, null, null, null, null, null, null))) : result.stream().map(Arguments::of);
     }
 }
diff --git a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/SingleE2EContainerComposer.java b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/SingleE2EContainerComposer.java
index 67a9f5f6cb5..8df70880d51 100644
--- a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/SingleE2EContainerComposer.java
+++ b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/composer/SingleE2EContainerComposer.java
@@ -25,6 +25,8 @@ import org.apache.shardingsphere.test.e2e.cases.dataset.DataSetLoader;
 import org.apache.shardingsphere.test.e2e.cases.value.SQLValue;
 import org.apache.shardingsphere.test.e2e.framework.param.model.AssertionTestParameter;
 
+import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -41,6 +43,10 @@ public final class SingleE2EContainerComposer extends E2EContainerComposer {
     
     private final IntegrationTestCaseAssertion assertion;
     
+    private final Collection<IntegrationTestCaseAssertion> assertions;
+    
+    private final List<DataSet> dataSets = new ArrayList<>();
+    
     private final DataSet dataSet;
     
     private final DataSet generatedKeyDataSet;
@@ -49,7 +55,18 @@ public final class SingleE2EContainerComposer extends E2EContainerComposer {
         super(testParam);
         sql = testParam.getTestCaseContext().getTestCase().getSql();
         sqlExecuteType = testParam.getSqlExecuteType();
+        assertions = testParam.getAssertions();
         assertion = testParam.getAssertion();
+        
+        if ("RDL".equals(testParam.getSqlCommandType().name())) {
+            for (IntegrationTestCaseAssertion caseAssertion : assertions) {
+                dataSets.add(null == caseAssertion || null == caseAssertion.getExpectedDataFile()
+                        ? null
+                        : DataSetLoader.load(testParam.getTestCaseContext().getParentPath(), testParam.getScenario(), testParam.getDatabaseType(), testParam.getMode(),
+                                caseAssertion.getExpectedDataFile()));
+            }
+        }
+        
         dataSet = null == assertion || null == assertion.getExpectedDataFile()
                 ? null
                 : DataSetLoader.load(testParam.getTestCaseContext().getParentPath(), testParam.getScenario(), testParam.getDatabaseType(), testParam.getMode(), assertion.getExpectedDataFile());
diff --git a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/RDLE2EIT.java b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/RDLE2EIT.java
index f09565d5942..2b9a19ac628 100644
--- a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/RDLE2EIT.java
+++ b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/engine/type/RDLE2EIT.java
@@ -17,8 +17,8 @@
 
 package org.apache.shardingsphere.test.e2e.engine.type;
 
-import com.google.common.base.Splitter;
 import org.apache.shardingsphere.test.e2e.cases.SQLCommandType;
+import org.apache.shardingsphere.test.e2e.cases.assertion.IntegrationTestCaseAssertion;
 import org.apache.shardingsphere.test.e2e.cases.dataset.metadata.DataSetColumn;
 import org.apache.shardingsphere.test.e2e.cases.dataset.metadata.DataSetMetaData;
 import org.apache.shardingsphere.test.e2e.cases.dataset.row.DataSetRow;
@@ -27,13 +27,12 @@ import org.apache.shardingsphere.test.e2e.engine.arg.E2ETestCaseSettings;
 import org.apache.shardingsphere.test.e2e.engine.composer.SingleE2EContainerComposer;
 import org.apache.shardingsphere.test.e2e.framework.param.array.E2ETestParameterFactory;
 import org.apache.shardingsphere.test.e2e.framework.param.model.AssertionTestParameter;
+import org.awaitility.Awaitility;
 import org.junit.jupiter.api.condition.EnabledIf;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ArgumentsSource;
-import org.testcontainers.shaded.org.awaitility.Awaitility;
 
 import java.sql.Connection;
-import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.ResultSetMetaData;
 import java.sql.SQLException;
@@ -45,7 +44,6 @@ import java.util.concurrent.TimeUnit;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 
 @E2ETestCaseSettings(SQLCommandType.RDL)
@@ -60,79 +58,108 @@ class RDLE2EIT {
             return;
         }
         SingleE2EContainerComposer containerComposer = new SingleE2EContainerComposer(testParam);
-        init(containerComposer);
-        assertExecute(testParam, containerComposer);
-        tearDown(containerComposer);
+        
+        if (null == containerComposer.getAssertions()) {
+            return;
+        }
+        int dataSetIndex = 0;
+        String mode = testParam.getMode();
+        
+        for (IntegrationTestCaseAssertion each : containerComposer.getAssertions()) {
+            if (null != each.getInitialSQL() && null != each.getAssertionSQL()) {
+                init(containerComposer, each, dataSetIndex, mode);
+            }
+            if (null != each.getAssertionSQL() && null == each.getDestroySQL() && null == each.getInitialSQL()) {
+                executeSQLCase(containerComposer, each, dataSetIndex, mode);
+            }
+            if (null != each.getDestroySQL() && null != each.getAssertionSQL()) {
+                tearDown(containerComposer, each, dataSetIndex, mode);
+            }
+            dataSetIndex++;
+        }
     }
     
-    private void assertExecute(final AssertionTestParameter testParam, final SingleE2EContainerComposer containerComposer) throws SQLException {
-        assertNotNull(testParam.getAssertion().getAssertionSQL(), "Assertion SQL is required");
+    private void executeSQLCase(final SingleE2EContainerComposer containerComposer, final IntegrationTestCaseAssertion testCaseExecuteSql,
+                                final int dataSetIndex, final String mode) throws SQLException {
         try (Connection connection = containerComposer.getTargetDataSource().getConnection()) {
             try (Statement statement = connection.createStatement()) {
-                executeSQLCase(containerComposer, statement);
-                Awaitility.await().pollDelay(2L, TimeUnit.SECONDS).until(() -> true);
-                assertResultSet(containerComposer, statement);
+                statement.execute(containerComposer.getSQL());
+                
+                executeAssertionSQL(containerComposer, statement, testCaseExecuteSql, dataSetIndex, mode);
             }
         }
     }
     
-    private void executeSQLCase(final SingleE2EContainerComposer containerComposer, final Statement statement) throws SQLException {
-        statement.execute(containerComposer.getSQL());
-    }
-    
-    private void init(final SingleE2EContainerComposer containerComposer) throws SQLException {
+    private void init(final SingleE2EContainerComposer containerComposer, final IntegrationTestCaseAssertion testCaseInitSql,
+                      final int dataSetIndex, final String mode) throws SQLException {
         try (Connection connection = containerComposer.getTargetDataSource().getConnection()) {
-            executeInitSQLs(containerComposer, connection);
+            executeInitSQLs(containerComposer, connection, testCaseInitSql, dataSetIndex, mode);
         }
     }
     
-    private void tearDown(final SingleE2EContainerComposer containerComposer) throws SQLException {
-        if (null != containerComposer.getAssertion().getDestroySQL()) {
-            try (Connection connection = containerComposer.getTargetDataSource().getConnection()) {
-                executeDestroySQLs(containerComposer, connection);
-            }
+    private void tearDown(final SingleE2EContainerComposer containerComposer, final IntegrationTestCaseAssertion testCaseDestroySQL,
+                          final int dataSetIndex, final String mode) throws SQLException {
+        try (Connection connection = containerComposer.getTargetDataSource().getConnection()) {
+            executeDestroySQLs(containerComposer, connection, testCaseDestroySQL, dataSetIndex, mode);
         }
-        Awaitility.await().pollDelay(2L, TimeUnit.SECONDS).until(() -> true);
     }
     
-    private void executeInitSQLs(final SingleE2EContainerComposer containerComposer, final Connection connection) throws SQLException {
-        if (null == containerComposer.getAssertion().getInitialSQL() || null == containerComposer.getAssertion().getInitialSQL().getSql()) {
+    private void executeInitSQLs(final SingleE2EContainerComposer containerComposer, final Connection connection,
+                                 final IntegrationTestCaseAssertion testCaseInitSql, final int dataSetIndex, final String mode) throws SQLException {
+        if (null == testCaseInitSql.getInitialSQL() || null == testCaseInitSql.getInitialSQL().getSql()) {
             return;
         }
-        for (String each : Splitter.on(";").trimResults().splitToList(containerComposer.getAssertion().getInitialSQL().getSql())) {
-            try (PreparedStatement preparedStatement = connection.prepareStatement(each)) {
-                preparedStatement.executeUpdate();
-                Awaitility.await().pollDelay(2L, TimeUnit.SECONDS).until(() -> true);
-            }
+        try (Statement statement = connection.createStatement()) {
+            statement.executeUpdate(testCaseInitSql.getInitialSQL().getSql());
+            
+            executeAssertionSQL(containerComposer, statement, testCaseInitSql, dataSetIndex, mode);
         }
     }
     
-    private void executeDestroySQLs(final SingleE2EContainerComposer containerComposer, final Connection connection) throws SQLException {
-        if (null == containerComposer.getAssertion().getDestroySQL().getSql()) {
+    private void executeAssertionSQL(final SingleE2EContainerComposer containerComposer, final Statement statement,
+                                     final IntegrationTestCaseAssertion testCaseAssertionSQL,
+                                     final int dataSetIndex, final String mode) {
+        if ("Cluster".equals(mode)) {
+            Awaitility.await().pollDelay(2L, TimeUnit.SECONDS).until(() -> assertResultSet(containerComposer, statement, testCaseAssertionSQL, dataSetIndex));
+        } else if ("Standalone".equals(mode)) {
+            assertResultSet(containerComposer, statement, testCaseAssertionSQL, dataSetIndex);
+        }
+    }
+    
+    private void executeDestroySQLs(final SingleE2EContainerComposer containerComposer, final Connection connection,
+                                    final IntegrationTestCaseAssertion testCaseDestroySQL,
+                                    final int dataSetIndex, final String mode) throws SQLException {
+        if (null == testCaseDestroySQL.getDestroySQL() || null == testCaseDestroySQL.getDestroySQL().getSql()) {
             return;
         }
-        for (String each : Splitter.on(";").trimResults().splitToList(containerComposer.getAssertion().getDestroySQL().getSql())) {
-            try (PreparedStatement preparedStatement = connection.prepareStatement(each)) {
-                preparedStatement.executeUpdate();
-                Awaitility.await().pollDelay(2L, TimeUnit.SECONDS).until(() -> true);
-            }
+        try (Statement statement = connection.createStatement()) {
+            statement.executeUpdate(testCaseDestroySQL.getDestroySQL().getSql());
+            
+            executeAssertionSQL(containerComposer, statement, testCaseDestroySQL, dataSetIndex, mode);
         }
     }
     
-    private void assertResultSet(final SingleE2EContainerComposer containerComposer, final Statement statement) throws SQLException {
-        try (ResultSet resultSet = statement.executeQuery(containerComposer.getAssertion().getAssertionSQL().getSql())) {
-            assertResultSet(containerComposer, resultSet);
+    private boolean assertResultSet(final SingleE2EContainerComposer containerComposer, final Statement statement,
+                                    final IntegrationTestCaseAssertion testCaseAssertionSql,
+                                    final int dataSetIndex) {
+        try (ResultSet resultSet = statement.executeQuery(testCaseAssertionSql.getAssertionSQL().getSql())) {
+            assertResultSet(containerComposer, resultSet, dataSetIndex);
+            return true;
+        } catch (final SQLException ignored) {
+            return false;
         }
     }
     
-    private void assertResultSet(final SingleE2EContainerComposer containerComposer, final ResultSet resultSet) throws SQLException {
-        assertMetaData(resultSet.getMetaData(), getExpectedColumns(containerComposer));
-        assertRows(resultSet, containerComposer.getDataSet().getRows());
+    private void assertResultSet(final SingleE2EContainerComposer containerComposer, final ResultSet resultSet,
+                                 final int dataSetIndex) throws SQLException {
+        assertMetaData(resultSet.getMetaData(), getExpectedColumns(containerComposer, dataSetIndex));
+        assertRows(resultSet, containerComposer.getDataSets().get(dataSetIndex).getRows());
     }
     
-    private Collection<DataSetColumn> getExpectedColumns(final SingleE2EContainerComposer containerComposer) {
+    private Collection<DataSetColumn> getExpectedColumns(final SingleE2EContainerComposer containerComposer, final int dataSetIndex) {
         Collection<DataSetColumn> result = new LinkedList<>();
-        for (DataSetMetaData each : containerComposer.getDataSet().getMetaDataList()) {
+        List<DataSetMetaData> dataSetMetaDataList = containerComposer.getDataSets().get(dataSetIndex).getMetaDataList();
+        for (DataSetMetaData each : dataSetMetaDataList) {
             result.addAll(each.getColumns());
         }
         return result;
diff --git a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/array/E2ETestParameterGenerator.java b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/array/E2ETestParameterGenerator.java
index 36a335c503c..a4edd6361c2 100644
--- a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/array/E2ETestParameterGenerator.java
+++ b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/array/E2ETestParameterGenerator.java
@@ -94,30 +94,39 @@ public final class E2ETestParameterGenerator {
     private Collection<AssertionTestParameter> getAssertionTestParameter(final IntegrationTestCaseContext testCaseContext,
                                                                          final DatabaseType databaseType, final SQLExecuteType sqlExecuteType, final SQLCommandType sqlCommandType) {
         Collection<AssertionTestParameter> result = new LinkedList<>();
-        for (IntegrationTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
-            result.addAll(getAssertionTestParameter(testCaseContext, databaseType, sqlExecuteType, each, sqlCommandType));
+        
+        if ("RDL".equals(sqlCommandType.name())) {
+            IntegrationTestCaseAssertion eachAssertions = testCaseContext.getTestCase().getAssertions().iterator().next();
+            result.addAll(getAssertionTestParameter(testCaseContext, databaseType, sqlExecuteType, eachAssertions, testCaseContext.getTestCase().getAssertions(), sqlCommandType));
+        } else {
+            for (IntegrationTestCaseAssertion each : testCaseContext.getTestCase().getAssertions()) {
+                result.addAll(getAssertionTestParameter(testCaseContext, databaseType, sqlExecuteType, each, testCaseContext.getTestCase().getAssertions(), sqlCommandType));
+            }
         }
         return result;
     }
     
     private Collection<AssertionTestParameter> getAssertionTestParameter(final IntegrationTestCaseContext testCaseContext,
                                                                          final DatabaseType databaseType, final SQLExecuteType sqlExecuteType,
-                                                                         final IntegrationTestCaseAssertion assertion, final SQLCommandType sqlCommandType) {
+                                                                         final IntegrationTestCaseAssertion assertion,
+                                                                         final Collection<IntegrationTestCaseAssertion> assertions,
+                                                                         final SQLCommandType sqlCommandType) {
         Collection<AssertionTestParameter> result = new LinkedList<>();
         for (String each : getEnvAdapters(testCaseContext.getTestCase().getAdapters())) {
             if (sqlCommandType.getRunningAdaptors().contains(each) && envAdapters.contains(each)) {
-                result.addAll(getAssertionTestParameter(testCaseContext, assertion, each, databaseType, sqlExecuteType, sqlCommandType));
+                result.addAll(getAssertionTestParameter(testCaseContext, assertion, assertions, each, databaseType, sqlExecuteType, sqlCommandType));
             }
         }
         return result;
     }
     
     private Collection<AssertionTestParameter> getAssertionTestParameter(final IntegrationTestCaseContext testCaseContext, final IntegrationTestCaseAssertion assertion,
+                                                                         final Collection<IntegrationTestCaseAssertion> assertions,
                                                                          final String adapter, final DatabaseType databaseType,
                                                                          final SQLExecuteType sqlExecuteType, final SQLCommandType sqlCommandType) {
         Collection<String> scenarios = null == testCaseContext.getTestCase().getScenarioTypes() ? Collections.emptyList() : Arrays.asList(testCaseContext.getTestCase().getScenarioTypes().split(","));
         return envScenarios.stream().filter(each -> filterScenarios(each, scenarios, sqlCommandType.getSqlStatementClass()))
-                .map(each -> new AssertionTestParameter(testCaseContext, assertion, adapter, each, envMode, databaseType, sqlExecuteType, sqlCommandType)).collect(Collectors.toList());
+                .map(each -> new AssertionTestParameter(testCaseContext, assertion, assertions, adapter, each, envMode, databaseType, sqlExecuteType, sqlCommandType)).collect(Collectors.toList());
     }
     
     private Collection<String> getEnvAdapters(final String envAdapters) {
diff --git a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/model/AssertionTestParameter.java b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/model/AssertionTestParameter.java
index 4a44185c2ff..ed8ff9b0982 100644
--- a/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/model/AssertionTestParameter.java
+++ b/test/e2e/sql/src/test/java/org/apache/shardingsphere/test/e2e/framework/param/model/AssertionTestParameter.java
@@ -25,9 +25,11 @@ import org.apache.shardingsphere.test.e2e.cases.SQLCommandType;
 import org.apache.shardingsphere.test.e2e.cases.SQLExecuteType;
 import org.apache.shardingsphere.test.e2e.cases.assertion.IntegrationTestCaseAssertion;
 
+import java.util.Collection;
 /**
  * Assertion test parameter.
  */
+
 @RequiredArgsConstructor
 @Getter
 public final class AssertionTestParameter implements E2ETestParameter {
@@ -36,6 +38,8 @@ public final class AssertionTestParameter implements E2ETestParameter {
     
     private final IntegrationTestCaseAssertion assertion;
     
+    private final Collection<IntegrationTestCaseAssertion> assertions;
+    
     private final String adapter;
     
     private final String scenario;
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/alter_binding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/alter_binding_rules.xml
new file mode 100644
index 00000000000..5acad3df919
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/alter_binding_rules.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+    <row values="reference_0| t_order,t_order_item" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_reference_rule_reference_0.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_reference_rule_reference_0.xml
new file mode 100644
index 00000000000..5acad3df919
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_reference_rule_reference_0.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+    <row values="reference_0| t_order,t_order_item" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..0caee8394a1
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ffb7158b977
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_reference_rule_reference_0.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_reference_rule_reference_0.xml
new file mode 100644
index 00000000000..cc2b3831070
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_reference_rule_reference_0.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_binding_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/alter_encrypt_rule.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/alter_encrypt_rule.xml
new file mode 100644
index 00000000000..c198bcecbc5
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/alter_encrypt_rule.xml
@@ -0,0 +1,33 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+    <row values="t_user| pwd| pwd_cipher| | | AES| aes-key-value=123456abcd| | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/create_encrypt_rule_t_user.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/create_encrypt_rule_t_user.xml
new file mode 100644
index 00000000000..ba7e21933c9
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/create_encrypt_rule_t_user.xml
@@ -0,0 +1,33 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+    <row values="t_user| pwd| pwd_cipher| | | AES| aes-key-value=123456abc| | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/drop_encrypt_rule_t_user.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/drop_encrypt_rule_t_user.xml
new file mode 100644
index 00000000000..b06c6f46d30
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_encrypt_rule/drop_encrypt_rule_t_user.xml
@@ -0,0 +1,32 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/alter_mask_rule.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/alter_mask_rule.xml
new file mode 100644
index 00000000000..0f7bc437a10
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/alter_mask_rule.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+    <row values="t_mask| order_id| MASK_FROM_X_TO_Y| from-x=1,replace-char=*,to-y=2" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/create_mask_rule_t_mask.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/create_mask_rule_t_mask.xml
new file mode 100644
index 00000000000..053ee1b62ac
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/create_mask_rule_t_mask.xml
@@ -0,0 +1,27 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+
+    <row values="t_mask | order_id | MD5 |"/>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/drop_mask_rule_t_mask.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/drop_mask_rule_t_mask.xml
new file mode 100644
index 00000000000..d1bbc872414
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_mask_rule/drop_mask_rule_t_mask.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/alter_sharding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/alter_sharding_rules.xml
new file mode 100644
index 00000000000..7e7ca28af32
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/alter_sharding_rules.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+    <row values="t_order| ds_2.t_order_${0..3} | | | | | | STANDARD | order_id| inline| algorithm-expression=t_order_${order_id % 4} | | | | |" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..0caee8394a1
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_sharding_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/alter_single_table_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/alter_single_table_rules.xml
new file mode 100644
index 00000000000..b19b759d402
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/alter_single_table_rules.xml
@@ -0,0 +1,28 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="t_country| ds_2" />
+    <row values="t_product_category| ds_2" />
+    <row values="t_user| ds_0" />
+    <row values="temp_alter| ds_0" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..15d0230d9c7
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..7ef566bd07e
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_table_temp_alter.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_table_temp_alter.xml
new file mode 100644
index 00000000000..a824499d3e7
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/drop_table_temp_alter.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_0.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_0.xml
new file mode 100644
index 00000000000..89982f05089
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_0.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="ds_0" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_1.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_1.xml
new file mode 100644
index 00000000000..ec4a1512fcc
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_ds_1.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="ds_1" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_random.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_random.xml
new file mode 100644
index 00000000000..a12bf8b54bb
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/alter_single_table_rules/set_default_single_table_storage_unit_=_random.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="RANDOM" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_binding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_binding_rules.xml
new file mode 100644
index 00000000000..5acad3df919
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_binding_rules.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+    <row values="reference_0| t_order,t_order_item" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..0caee8394a1
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ffb7158b977
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_reference_rule_reference_0.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_reference_rule_reference_0.xml
new file mode 100644
index 00000000000..cc2b3831070
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_reference_rule_reference_0.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_binding_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/create_broadcast_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/create_broadcast_rules.xml
new file mode 100644
index 00000000000..f85e249bbf3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/create_broadcast_rules.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="broadcast_table" />
+    </metadata>
+    <row values="t_product_category" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/drop_broadcast_table_rule_t_product_category.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/drop_broadcast_table_rule_t_product_category.xml
new file mode 100644
index 00000000000..2bd51c33376
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_broadcast_rules/drop_broadcast_table_rule_t_product_category.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="broadcast_table" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/create_encrypt_rule.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/create_encrypt_rule.xml
new file mode 100644
index 00000000000..ba7e21933c9
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/create_encrypt_rule.xml
@@ -0,0 +1,33 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+    <row values="t_user| pwd| pwd_cipher| | | AES| aes-key-value=123456abc| | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/drop_encrypt_rule_t_user.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/drop_encrypt_rule_t_user.xml
new file mode 100644
index 00000000000..b06c6f46d30
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_encrypt_rule/drop_encrypt_rule_t_user.xml
@@ -0,0 +1,32 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/create_mask_rule.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/create_mask_rule.xml
new file mode 100644
index 00000000000..f8e8830ae09
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/create_mask_rule.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+    <row values="t_mask| order_id| MD5| " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/drop_mask_rule_t_mask.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/drop_mask_rule_t_mask.xml
new file mode 100644
index 00000000000..d1bbc872414
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_mask_rule/drop_mask_rule_t_mask.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/create_sharding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/create_sharding_rules.xml
new file mode 100644
index 00000000000..3ac65df1c31
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/create_sharding_rules.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+    <row values="t_order| ds_2.t_order_${0..1} | | | | | | STANDARD | order_id| inline| algorithm-expression=t_order_${order_id % 2} | | | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_sharding_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..15d0230d9c7
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..7ef566bd07e
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_single_table_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_single_table_rules.xml
new file mode 100644
index 00000000000..bb0705ad713
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/create_single_table_rules.xml
@@ -0,0 +1,28 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="t_country| ds_2" />
+    <row values="t_product_category| ds_2" />
+    <row values="t_user| ds_0" />
+    <row values="temp| ds_1" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_single_table_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_single_table_rules.xml
new file mode 100644
index 00000000000..9ed72429c45
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_single_table_rules.xml
@@ -0,0 +1,27 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="t_country| ds_2" />
+    <row values="t_product_category| ds_2" />
+    <row values="t_user| ds_0" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_table_temp.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_table_temp.xml
new file mode 100644
index 00000000000..a824499d3e7
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/drop_table_temp.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit.xml
new file mode 100644
index 00000000000..ec4a1512fcc
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="ds_1" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit_=_random.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit_=_random.xml
new file mode 100644
index 00000000000..a12bf8b54bb
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/create_single_table_rules/set_default_single_table_storage_unit_=_random.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="RANDOM" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_reference_rule_reference_0.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_reference_rule_reference_0.xml
new file mode 100644
index 00000000000..5acad3df919
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_reference_rule_reference_0.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+    <row values="reference_0| t_order,t_order_item" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..0caee8394a1
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ffb7158b977
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..1} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 2} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_binding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_binding_rules.xml
new file mode 100644
index 00000000000..cc2b3831070
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_binding_rules.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="name" />
+        <column name="sharding_table_reference" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_binding_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/create_broadcast_table_rule_t_country.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/create_broadcast_table_rule_t_country.xml
new file mode 100644
index 00000000000..5c97845eb4e
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/create_broadcast_table_rule_t_country.xml
@@ -0,0 +1,23 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="broadcast_table" />
+    </metadata>
+    <row values="t_country" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/drop_broadcast_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/drop_broadcast_rules.xml
new file mode 100644
index 00000000000..2bd51c33376
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_broadcast_rules/drop_broadcast_rules.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="broadcast_table" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/create_encrypt_rule_t_user.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/create_encrypt_rule_t_user.xml
new file mode 100644
index 00000000000..ba7e21933c9
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/create_encrypt_rule_t_user.xml
@@ -0,0 +1,33 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+    <row values="t_user| pwd| pwd_cipher| | | AES| aes-key-value=123456abc| | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/drop_encrypt_rule_t_user.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/drop_encrypt_rule_t_user.xml
new file mode 100644
index 00000000000..b06c6f46d30
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_encrypt_rule/drop_encrypt_rule_t_user.xml
@@ -0,0 +1,32 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="logic_column" />
+        <column name="cipher_column" />
+        <column name="assisted_query_column" />
+        <column name="like_query_column" />
+        <column name="encryptor_type" />
+        <column name="encryptor_props" />
+        <column name="assisted_query_type" />
+        <column name="assisted_query_props" />
+        <column name="like_query_type" />
+        <column name="like_query_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/create_mask_rule_t_mask.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/create_mask_rule_t_mask.xml
new file mode 100644
index 00000000000..8009d979d35
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/create_mask_rule_t_mask.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+    <row values="t_mask | order_id | MD5 |" />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/drop_mask_rule.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/drop_mask_rule.xml
new file mode 100644
index 00000000000..d1bbc872414
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_mask_rule/drop_mask_rule.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="column" />
+        <column name="algorithm_type" />
+        <column name="algorithm_props" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/create_sharding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/create_sharding_rules.xml
new file mode 100644
index 00000000000..3ac65df1c31
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/create_sharding_rules.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+    <row values="t_order| ds_2.t_order_${0..1} | | | | | | STANDARD | order_id| inline| algorithm-expression=t_order_${order_id % 2} | | | | | " />
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/drop_sharding_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/drop_sharding_rules.xml
new file mode 100644
index 00000000000..d464b03c3b3
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_sharding_rules/drop_sharding_rules.xml
@@ -0,0 +1,37 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table" />
+        <column name="actual_data_nodes" />
+        <column name="actual_data_sources" />
+        <column name="database_strategy_type" />
+        <column name="database_sharding_column" />
+        <column name="database_sharding_algorithm_type" />
+        <column name="database_sharding_algorithm_props" />
+        <column name="table_strategy_type" />
+        <column name="table_sharding_column" />
+        <column name="table_sharding_algorithm_type" />
+        <column name="table_sharding_algorithm_props" />
+        <column name="key_generate_column" />
+        <column name="key_generator_type" />
+        <column name="key_generator_props" />
+        <column name="auditor_types" />
+        <column name="allow_hint_disable" />
+    </metadata>
+</dataset>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..15d0230d9c7
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order | ds_2.t_order_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..7ef566bd07e
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/create_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,39 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+    <row values="t_order_item | ds_2.t_order_item_${0..3} | | | | | | STANDARD | order_id | inline | algorithm-expression=t_order_item_${order_id % 4} | | | | |"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order_item.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order_item.xml
new file mode 100644
index 00000000000..ab41af4cbef
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_sharding_table_rule_t_order_item.xml
@@ -0,0 +1,38 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table"/>
+        <column name="actual_data_nodes"/>
+        <column name="actual_data_sources"/>
+        <column name="database_strategy_type"/>
+        <column name="database_sharding_column"/>
+        <column name="database_sharding_algorithm_type"/>
+        <column name="database_sharding_algorithm_props"/>
+        <column name="table_strategy_type"/>
+        <column name="table_sharding_column"/>
+        <column name="table_sharding_algorithm_type"/>
+        <column name="table_sharding_algorithm_props"/>
+        <column name="key_generate_column"/>
+        <column name="key_generator_type"/>
+        <column name="key_generator_props"/>
+        <column name="auditor_types"/>
+        <column name="allow_hint_disable"/>
+    </metadata>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_single_table_rules.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_single_table_rules.xml
new file mode 100644
index 00000000000..9ed72429c45
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/drop_single_table_rules.xml
@@ -0,0 +1,27 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="table_name" />
+        <column name="storage_unit_name" />
+    </metadata>
+    <row values="t_country| ds_2" />
+    <row values="t_product_category| ds_2" />
+    <row values="t_user| ds_0" />
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/set_default_single_table_storage_unit.xml b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/set_default_single_table_storage_unit.xml
new file mode 100644
index 00000000000..f085762c707
--- /dev/null
+++ b/test/e2e/sql/src/test/resources/cases/rdl/dataset/rdl_empty_rules/drop_single_table_rules/set_default_single_table_storage_unit.xml
@@ -0,0 +1,24 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one or more
+  ~ contributor license agreements.  See the NOTICE file distributed with
+  ~ this work for additional information regarding copyright ownership.
+  ~ The ASF licenses this file to You under the Apache License, Version 2.0
+  ~ (the "License"); you may not use this file except in compliance with
+  ~ the License.  You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<dataset>
+    <metadata>
+        <column name="storage_unit_name"/>
+    </metadata>
+    <row values="ds_0"/>
+</dataset>
+
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-alter.xml b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-alter.xml
index 59442df1530..12e7fe4729e 100644
--- a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-alter.xml
+++ b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-alter.xml
@@ -22,29 +22,71 @@
     <!--        </assertion>-->
     <!--    </test-case>-->
     
-    <test-case sql="ALTER SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item)" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="alter_binding_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));
-            CREATE SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" />
+    <test-case sql="ALTER SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" db-types="MySQL, PostgreSQL">
+        <assertion expected-data-file="alter_binding_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+         </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/create_sharding_table_reference_rule_reference_0.xml">
+            <initial-sql sql="CREATE SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" />
+            <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/alter_binding_rules.xml">
+            <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/drop_sharding_table_reference_rule_reference_0.xml">
+            <destroy-sql sql="DROP SHARDING TABLE REFERENCE RULE reference_0;" />
             <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
-            <destroy-sql sql="DROP SHARDING TABLE REFERENCE RULE reference_0;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_binding_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
         </assertion>
     </test-case>
     
     <test-case sql="ALTER ENCRYPT RULE t_user (COLUMNS((NAME=pwd,CIPHER=pwd_cipher,ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abcd'))))));" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="alter_encrypt_rule.xml">
+        <assertion expected-data-file="alter_encrypt_rule/create_encrypt_rule_t_user.xml">
             <initial-sql sql="CREATE ENCRYPT RULE t_user (COLUMNS((NAME=pwd,CIPHER=pwd_cipher,ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))))));" />
             <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
-            <destroy-sql sql="DROP ENCRYPT RULE t_user " />
+        </assertion>
+
+        <assertion expected-data-file="alter_encrypt_rule/alter_encrypt_rule.xml">
+             <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_encrypt_rule/drop_encrypt_rule_t_user.xml">
+            <destroy-sql sql="DROP ENCRYPT RULE t_user;" />
+            <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
         </assertion>
     </test-case>
 
     <test-case sql="ALTER SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));" db-types="MySQL">
-        <assertion expected-data-file="alter_sharding_rules.xml">
+        <assertion expected-data-file="alter_sharding_rules/create_sharding_table_rule_t_order.xml">
             <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_sharding_rules/alter_sharding_rules.xml">
             <assertion-sql sql="SHOW SHARDING TABLE RULES;" />
-            <destroy-sql sql="DROP SHARDING TABLE RULE t_order" />
+        </assertion>
+
+        <assertion expected-data-file="alter_sharding_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
         </assertion>
     </test-case>
 
@@ -65,10 +107,18 @@
 <!--    </test-case>-->
     
     <test-case sql="ALTER MASK RULE t_mask (COLUMNS((NAME=order_id, TYPE(NAME='MASK_FROM_X_TO_Y', PROPERTIES('from-x'=1, 'to-y'=2, 'replace-char'='*')))));">
-        <assertion expected-data-file="alter_mask_rule.xml">
+        <assertion expected-data-file="alter_mask_rule/create_mask_rule_t_mask.xml">
             <initial-sql sql="CREATE MASK RULE t_mask (COLUMNS((NAME=order_id,TYPE(NAME='MD5'))));" />
             <assertion-sql sql="SHOW MASK RULES;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_mask_rule/alter_mask_rule.xml">
+            <assertion-sql sql="SHOW MASK RULES;" />
+        </assertion>
+
+        <assertion expected-data-file="alter_mask_rule/drop_mask_rule_t_mask.xml">
             <destroy-sql sql="DROP MASK RULE t_mask;" />
+            <assertion-sql sql="SHOW MASK RULES;" />
         </assertion>
     </test-case>
 </integration-test-cases>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-create.xml b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-create.xml
index 22a64cc8879..42560dc2153 100644
--- a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-create.xml
+++ b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-create.xml
@@ -16,52 +16,130 @@
   -->
 <integration-test-cases>
     <test-case sql="CREATE SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="create_binding_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));" />
+        <assertion expected-data-file="create_binding_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="create_binding_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
+           </assertion>
+        <assertion expected-data-file="create_binding_rules/create_binding_rules.xml">
+             <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
+        </assertion>
+        <assertion expected-data-file="create_binding_rules/drop_sharding_table_reference_rule_reference_0.xml">
+            <destroy-sql sql="DROP SHARDING TABLE REFERENCE RULE reference_0;" />
             <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
-            <destroy-sql sql="DROP SHARDING TABLE REFERENCE RULE reference_0;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+        <assertion expected-data-file="create_binding_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="create_binding_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
         </assertion>
     </test-case>
-    
+
     <test-case sql="CREATE BROADCAST TABLE RULE t_product_category;" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="create_broadcast_rules.xml">
+        <assertion expected-data-file="create_broadcast_rules/create_broadcast_rules.xml">
+            <assertion-sql sql="SHOW BROADCAST TABLE RULES;" />
+        </assertion>
+        <assertion expected-data-file="create_broadcast_rules/drop_broadcast_table_rule_t_product_category.xml">
+            <destroy-sql sql="DROP BROADCAST TABLE RULE t_product_category;" />
             <assertion-sql sql="SHOW BROADCAST TABLE RULES;" />
-            <destroy-sql sql="DROP BROADCAST TABLE RULE t_product_category; " />
         </assertion>
     </test-case>
-    
+
     <test-case sql="CREATE ENCRYPT RULE t_user (COLUMNS((NAME=pwd,CIPHER=pwd_cipher,ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))))));" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="create_encrypt_rule.xml">
+        <assertion expected-data-file="create_encrypt_rule/create_encrypt_rule.xml">
+            <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
+        </assertion>
+        <assertion expected-data-file="create_encrypt_rule/drop_encrypt_rule_t_user.xml">
+            <destroy-sql sql="DROP ENCRYPT RULE t_user;" />
             <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
-            <destroy-sql sql="DROP ENCRYPT RULE t_user " />
         </assertion>
     </test-case>
-    
+
     <test-case sql="CREATE TABLE temp (country_id INT PRIMARY KEY, country_name VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="create_single_table_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;" />
+        <assertion expected-data-file="create_single_table_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/set_default_single_table_storage_unit.xml">
+            <initial-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;" />
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/create_single_table_rules.xml">
             <assertion-sql sql="SHOW SINGLE TABLES;" />
-            <destroy-sql sql="DROP TABLE temp;SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/drop_table_temp.xml">
+            <destroy-sql sql="DROP TABLE temp;" />
+            <assertion-sql sql="SHOW SINGLE TABLE temp;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/set_default_single_table_storage_unit_=_random.xml">
+            <destroy-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;" />
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="create_single_table_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
         </assertion>
     </test-case>
-    
+
     <test-case sql="CREATE TABLE temp_alter (country_id INT PRIMARY KEY, country_name VARCHAR(50), continent_name VARCHAR(50), creation_date DATE NOT NULL);" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="alter_single_table_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;" />
+        <assertion expected-data-file="alter_single_table_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+       </assertion>
+        <assertion expected-data-file="alter_single_table_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
+         </assertion>
+        <assertion expected-data-file="alter_single_table_rules/set_default_single_table_storage_unit_=_ds_1.xml">
+            <initial-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_1;" />
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;" />
+        </assertion>
+        <assertion expected-data-file="alter_single_table_rules/set_default_single_table_storage_unit_=_ds_0.xml">
+            <initial-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;" />
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;" />
+        </assertion>
+        <assertion expected-data-file="alter_single_table_rules/alter_single_table_rules.xml">
             <assertion-sql sql="SHOW SINGLE TABLES;" />
-            <destroy-sql sql="DROP TABLE temp_alter;SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+       </assertion>
+        <assertion expected-data-file="alter_single_table_rules/drop_table_temp_alter.xml">
+            <destroy-sql sql="DROP TABLE temp_alter;" />
+            <assertion-sql sql="SHOW SINGLE TABLE temp_alter;" />
+        </assertion>
+        <assertion expected-data-file="alter_single_table_rules/set_default_single_table_storage_unit_=_random.xml">
+            <destroy-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM;" />
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;" />
+        </assertion>
+        <assertion expected-data-file="alter_single_table_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="alter_single_table_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
         </assertion>
     </test-case>
-    
+
     <test-case sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));" db-types="MySQL">
-        <assertion expected-data-file="create_sharding_rules.xml">
+        <assertion expected-data-file="create_sharding_rules/create_sharding_rules.xml">
             <assertion-sql sql="SHOW SHARDING TABLE RULES;" />
+        </assertion>
+        <assertion expected-data-file="create_sharding_rules/drop_sharding_table_rule_t_order.xml">
             <destroy-sql sql="DROP SHARDING TABLE RULE t_order" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULES;" />
         </assertion>
     </test-case>
 
@@ -80,11 +158,14 @@
 <!--            <assertion-sql sql="SHOW READWRITE_SPLITTING RULES;" />-->
 <!--        </assertion>-->
 <!--    </test-case>-->
-    
+
     <test-case sql="CREATE MASK RULE t_mask (COLUMNS((NAME=order_id,TYPE(NAME='MD5'))));">
-        <assertion expected-data-file="create_mask_rule.xml">
+        <assertion expected-data-file="create_mask_rule/create_mask_rule.xml">
             <assertion-sql sql="SHOW MASK RULES;" />
+        </assertion>
+        <assertion expected-data-file="create_mask_rule/drop_mask_rule_t_mask.xml">
             <destroy-sql sql="DROP MASK RULE t_mask;" />
+            <assertion-sql sql="SHOW MASK RULES;" />
         </assertion>
     </test-case>
 </integration-test-cases>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-drop.xml b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-drop.xml
index 497cc29efa9..fc991fbe592 100644
--- a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-drop.xml
+++ b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-drop.xml
@@ -16,32 +16,57 @@
   -->
 <integration-test-cases>
     <test-case sql="DROP SHARDING TABLE REFERENCE RULE reference_0;" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="drop_binding_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));
-            CREATE SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" />
+        <assertion expected-data-file="drop_binding_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="drop_binding_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 2}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+        <assertion expected-data-file="drop_binding_rules/create_sharding_table_reference_rule_reference_0.xml">
+            <initial-sql sql="CREATE SHARDING TABLE REFERENCE RULE reference_0 (t_order,t_order_item);" />
             <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
-            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+        </assertion>
+        <assertion expected-data-file="drop_binding_rules/drop_binding_rules.xml">
+            <assertion-sql sql="SHOW SHARDING TABLE REFERENCE RULES;" />
+        </assertion>
+        <assertion expected-data-file="drop_binding_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="drop_binding_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;" />
         </assertion>
     </test-case>
-    
+
     <test-case sql="DROP BROADCAST TABLE RULE t_country;" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="drop_broadcast_rules.xml">
+        <assertion expected-data-file="drop_broadcast_rules/create_broadcast_table_rule_t_country.xml">
             <initial-sql sql="CREATE BROADCAST TABLE RULE t_country;" />
             <assertion-sql sql="SHOW BROADCAST TABLE RULES;" />
         </assertion>
+        <assertion expected-data-file="drop_broadcast_rules/drop_broadcast_rules.xml">
+            <assertion-sql sql="SHOW BROADCAST TABLE RULES;" />
+        </assertion>
     </test-case>
-    
+
     <test-case sql="DROP ENCRYPT RULE t_user;" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="drop_encrypt_rule.xml">
+        <assertion expected-data-file="drop_encrypt_rule/create_encrypt_rule_t_user.xml">
             <initial-sql sql="CREATE ENCRYPT RULE t_user (COLUMNS((NAME=pwd,CIPHER=pwd_cipher,ENCRYPT_ALGORITHM(TYPE(NAME='AES',PROPERTIES('aes-key-value'='123456abc'))))));" />
             <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
         </assertion>
+        <assertion expected-data-file="drop_encrypt_rule/drop_encrypt_rule_t_user.xml">
+            <assertion-sql sql="SHOW ENCRYPT TABLE RULE t_user;" />
+        </assertion>
     </test-case>
-    
-    <test-case sql="DROP SHARDING TABLE RULE t_order" db-types="MySQL">
-        <assertion expected-data-file="drop_sharding_rules.xml">
+
+    <test-case sql="DROP SHARDING TABLE RULE t_order;" db-types="MySQL">
+        <assertion expected-data-file="drop_sharding_rules/create_sharding_rules.xml">
             <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..1}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 2}')))));" />
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;" />
+        </assertion>
+        <assertion expected-data-file="drop_sharding_rules/drop_sharding_rules.xml">
             <assertion-sql sql="SHOW SHARDING TABLE RULES;" />
         </assertion>
     </test-case>
@@ -53,11 +78,14 @@
 <!--            <assertion-sql sql="SHOW TABLES;" />-->
 <!--        </assertion>-->
 <!--    </test-case>-->
-    
+
     <test-case sql="DROP MASK RULE t_mask;">
-        <assertion expected-data-file="drop_mask_rule.xml">
+        <assertion expected-data-file="drop_mask_rule/create_mask_rule_t_mask.xml">
             <initial-sql sql="CREATE MASK RULE t_mask (COLUMNS((NAME=order_id,TYPE(NAME='MD5'))));" />
             <assertion-sql sql="SHOW MASK RULES;" />
         </assertion>
+        <assertion expected-data-file="drop_mask_rule/drop_mask_rule.xml">
+            <assertion-sql sql="SHOW MASK RULES;" />
+        </assertion>
     </test-case>
 </integration-test-cases>
diff --git a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-set.xml b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-set.xml
index 5d1e41189d8..b0d0bf0596a 100644
--- a/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-set.xml
+++ b/test/e2e/sql/src/test/resources/cases/rdl/rdl-integration-set.xml
@@ -16,12 +16,34 @@
   -->
 <integration-test-cases>
     <test-case sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = RANDOM" db-types="MySQL, PostgreSQL">
-        <assertion expected-data-file="drop_single_table_rules.xml">
-            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));
-            CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));
-            SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;" />
-            <assertion-sql sql="SHOW SINGLE TABLES;" />
-            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;DROP SHARDING TABLE RULE t_order_item;" />
+        <assertion expected-data-file="drop_single_table_rules/create_sharding_table_rule_t_order.xml">
+            <initial-sql sql="CREATE SHARDING TABLE RULE t_order (DATANODES('ds_2.t_order_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_${order_id % 4}')))));"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;"/>
+        </assertion>
+
+        <assertion expected-data-file="drop_single_table_rules/create_sharding_table_rule_t_order_item.xml">
+            <initial-sql
+                    sql="CREATE SHARDING TABLE RULE t_order_item (DATANODES('ds_2.t_order_item_${0..3}'),TABLE_STRATEGY(TYPE='standard',SHARDING_COLUMN=order_id,SHARDING_ALGORITHM(TYPE(NAME='inline',PROPERTIES('algorithm-expression'='t_order_item_${order_id % 4}')))));"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;"/>
+        </assertion>
+
+        <assertion expected-data-file="drop_single_table_rules/set_default_single_table_storage_unit.xml">
+            <initial-sql sql="SET DEFAULT SINGLE TABLE STORAGE UNIT = ds_0;"/>
+            <assertion-sql sql="SHOW DEFAULT SINGLE TABLE STORAGE UNIT;"/>
+        </assertion>
+
+        <assertion expected-data-file="drop_single_table_rules/drop_single_table_rules.xml">
+            <assertion-sql sql="SHOW SINGLE TABLES;"/>
+        </assertion>
+
+        <assertion expected-data-file="drop_single_table_rules/drop_sharding_table_rule_t_order.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order;"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order;"/>
+        </assertion>
+
+        <assertion expected-data-file="drop_single_table_rules/drop_sharding_table_rule_t_order_item.xml">
+            <destroy-sql sql="DROP SHARDING TABLE RULE t_order_item;"/>
+            <assertion-sql sql="SHOW SHARDING TABLE RULE t_order_item;"/>
         </assertion>
     </test-case>
 </integration-test-cases>