You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2023/02/03 09:50:12 UTC

[shardingsphere] branch master updated: Refactor some dql test case which compare expect by xml. (#23931)

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

duanzhengqiang 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 c2c0d00df1a Refactor some dql test case which compare expect by xml. (#23931)
c2c0d00df1a is described below

commit c2c0d00df1a16d1e0e79a33809bfcf5e85cb4b43
Author: Chuxin Chen <ch...@qq.com>
AuthorDate: Fri Feb 3 17:50:03 2023 +0800

    Refactor some dql test case which compare expect by xml. (#23931)
    
    * Refactor some dql test case which compare expect by xml.
    
    * Refactor some dql test case which compare expect by xml.
    
    * Refactor some dql test case which compare expect by xml.
    
    * Refactor some dql test case which compare expect by xml.
    
    * Refactor some dql test case which compare expect by xml.
---
 .../test/e2e/cases/dataset/row/DataSetRow.java     |   3 +
 .../test/e2e/engine/dql/AdditionalDQLE2EIT.java    | 200 ++++++++++-----------
 .../test/e2e/engine/dql/BaseDQLE2EIT.java          |  97 ++++++++++
 .../test/e2e/engine/dql/GeneralDQLE2EIT.java       |  43 +++++
 .../dataset/db}/select_cluster_information.xml     |   0
 .../db/select_sharding_table_statistics.xml        |  62 +++++++
 .../dql/dataset/db/select_sys_data_for_og.xml      |  44 +++++
 .../dql/dataset/db/select_sys_data_for_pg.xml      |  43 +++++
 .../cases/dql/dql-integration-test-cases.xml       |  16 ++
 .../mysql/select_sharding_table_statistics.xml     | 108 -----------
 .../opengauss/select_sharding_table_statistics.xml | 108 -----------
 .../cluster/opengauss/select_sys_data_for_og.xml   |  29 ---
 .../select_sharding_table_statistics.xml           | 108 -----------
 .../cluster/postgresql/select_sys_data_for_pg.xml  |  28 ---
 .../select_sharding_table_statistics.xml           |  28 ---
 .../opengauss/select_sys_data_for_og.xml           |  26 ---
 .../postgresql/select_sys_data_for_pg.xml          |  25 ---
 .../cases/ral/ral-integration-test-cases.xml       |  16 --
 18 files changed, 398 insertions(+), 586 deletions(-)

diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
index 7f4de97ddce..ee64067824d 100644
--- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
+++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/cases/dataset/row/DataSetRow.java
@@ -42,6 +42,9 @@ public final class DataSetRow {
     @XmlAttribute(required = true)
     private String values;
     
+    @XmlAttribute
+    private boolean mayNotExist;
+    
     /**
      * Split values with vertical bar.
      *
diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/AdditionalDQLE2EIT.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/AdditionalDQLE2EIT.java
index 8883137df50..9c812503eab 100644
--- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/AdditionalDQLE2EIT.java
+++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/AdditionalDQLE2EIT.java
@@ -57,169 +57,149 @@ public final class AdditionalDQLE2EIT extends BaseDQLE2EIT {
         if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
             return;
         }
-        try (
-                Connection actualConnection = getTargetDataSource().getConnection();
-                Connection expectedConnection = getExpectedDataSource().getConnection()) {
-            if (SQLExecuteType.Literal == getSqlExecuteType()) {
-                assertExecuteQueryForStatementWithResultSetTypeAndResultSetConcurrency(actualConnection, expectedConnection);
-            } else {
-                assertExecuteQueryForPreparedStatementWithResultSetTypeAndResultSetConcurrency(actualConnection, expectedConnection);
-            }
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteQueryWithXMLExpected(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
+        } else {
+            assertExecuteQueryWithExpectedDataSource(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
         }
     }
     
-    private boolean isPostgreSQLOrOpenGauss(final String databaseType) {
-        return "PostgreSQL".equals(databaseType) || "openGauss".equals(databaseType);
-    }
-    
-    private void assertExecuteQueryForStatementWithResultSetTypeAndResultSetConcurrency(
-                                                                                        final Connection actualConnection, final Connection expectedConnection) throws SQLException, ParseException {
-        try (
-                Statement actualStatement = actualConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-                ResultSet actualResultSet = actualStatement.executeQuery(getSQL());
-                Statement expectedStatement = expectedConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-                ResultSet expectedResultSet = expectedStatement.executeQuery(getSQL())) {
-            assertResultSet(actualResultSet, expectedResultSet);
+    @Test
+    public void assertExecuteQueryWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability() throws SQLException, ParseException {
+        // TODO fix e2e test blocked exception with PostgreSQL or openGuass in #23643
+        if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
+            return;
+        }
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteQueryWithXMLExpected(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
+        } else {
+            assertExecuteQueryWithExpectedDataSource(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
         }
     }
     
-    private void assertExecuteQueryForPreparedStatementWithResultSetTypeAndResultSetConcurrency(
-                                                                                                final Connection actualConnection,
-                                                                                                final Connection expectedConnection) throws SQLException, ParseException {
-        try (
-                PreparedStatement actualPreparedStatement = actualConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-                PreparedStatement expectedPreparedStatement = expectedConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)) {
-            for (SQLValue each : getAssertion().getSQLValues()) {
-                actualPreparedStatement.setObject(each.getIndex(), each.getValue());
-                expectedPreparedStatement.setObject(each.getIndex(), each.getValue());
-            }
-            try (
-                    ResultSet actualResultSet = actualPreparedStatement.executeQuery();
-                    ResultSet expectedResultSet = expectedPreparedStatement.executeQuery()) {
-                assertResultSet(actualResultSet, expectedResultSet);
-            }
+    @Test
+    public void assertExecuteWithResultSetTypeAndResultSetConcurrency() throws SQLException, ParseException {
+        // TODO fix e2e test blocked exception with PostgreSQL or openGuass in #23643
+        if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
+            return;
+        }
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteWithXMLExpected(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
+        } else {
+            assertExecuteWithExpectedDataSource(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
         }
     }
     
     @Test
-    public void assertExecuteQueryWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability() throws SQLException, ParseException {
+    public void assertExecuteWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability() throws SQLException, ParseException {
         // TODO fix e2e test blocked exception with PostgreSQL or openGuass in #23643
         if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
             return;
         }
-        try (
-                Connection actualConnection = getTargetDataSource().getConnection();
-                Connection expectedConnection = getExpectedDataSource().getConnection()) {
-            if (SQLExecuteType.Literal == getSqlExecuteType()) {
-                assertExecuteQueryForStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(actualConnection, expectedConnection);
-            } else {
-                assertExecuteQueryForPreparedStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(actualConnection, expectedConnection);
-            }
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteWithXMLExpected(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
+        } else {
+            assertExecuteWithExpectedDataSource(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
         }
     }
     
-    private void assertExecuteQueryForStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(
-                                                                                                               final Connection actualConnection,
-                                                                                                               final Connection expectedConnection) throws SQLException, ParseException {
-        try (
-                Statement actualStatement = actualConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
-                ResultSet actualResultSet = actualStatement.executeQuery(getSQL());
-                Statement expectedStatement = expectedConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
-                ResultSet expectedResultSet = expectedStatement.executeQuery(getSQL())) {
-            assertResultSet(actualResultSet, expectedResultSet);
-        }
+    private boolean isPostgreSQLOrOpenGauss(final String databaseType) {
+        return "PostgreSQL".equals(databaseType) || "openGauss".equals(databaseType);
     }
     
-    private void assertExecuteQueryForPreparedStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(
-                                                                                                                       final Connection actualConnection,
-                                                                                                                       final Connection expectedConnection) throws SQLException, ParseException {
+    private void assertExecuteQueryWithXMLExpected(final int... resultSetTypes) throws SQLException, ParseException {
+        // TODO Fix jdbc adapter
+        if ("jdbc".equals(getAdapter())) {
+            return;
+        }
         try (
-                PreparedStatement actualPreparedStatement = actualConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
-                PreparedStatement expectedPreparedStatement = expectedConnection.prepareStatement(
-                        getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT)) {
-            for (SQLValue each : getAssertion().getSQLValues()) {
-                actualPreparedStatement.setObject(each.getIndex(), each.getValue());
-                expectedPreparedStatement.setObject(each.getIndex(), each.getValue());
-            }
-            try (
-                    ResultSet actualResultSet = actualPreparedStatement.executeQuery();
-                    ResultSet expectedResultSet = expectedPreparedStatement.executeQuery()) {
-                assertResultSet(actualResultSet, expectedResultSet);
-            }
+                Connection connection = getTargetDataSource().getConnection();
+                Statement statement = 2 == resultSetTypes.length ? connection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : connection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                ResultSet resultSet = statement.executeQuery(getSQL())) {
+            assertResultSet(resultSet);
         }
     }
     
-    @Test
-    public void assertExecuteWithResultSetTypeAndResultSetConcurrency() throws SQLException, ParseException {
-        // TODO fix e2e test blocked exception with PostgreSQL or openGuass in #23643
-        if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
-            return;
-        }
+    private void assertExecuteQueryWithExpectedDataSource(final int... resultSetTypes) throws SQLException, ParseException {
         try (
                 Connection actualConnection = getTargetDataSource().getConnection();
                 Connection expectedConnection = getExpectedDataSource().getConnection()) {
             if (SQLExecuteType.Literal == getSqlExecuteType()) {
-                assertExecuteForStatementWithResultSetTypeAndResultSetConcurrency(actualConnection, expectedConnection);
+                assertExecuteQueryForStatementWithResultSetTypes(actualConnection, expectedConnection, resultSetTypes);
             } else {
-                assertExecuteForPreparedStatementWithResultSetTypeAndResultSetConcurrency(actualConnection, expectedConnection);
+                assertExecuteQueryForPreparedStatementWithResultSetTypes(actualConnection, expectedConnection, resultSetTypes);
             }
         }
     }
     
-    private void assertExecuteForStatementWithResultSetTypeAndResultSetConcurrency(final Connection actualConnection, final Connection expectedConnection) throws SQLException, ParseException {
+    private void assertExecuteQueryForStatementWithResultSetTypes(
+                                                                  final Connection actualConnection, final Connection expectedConnection,
+                                                                  final int... resultSetTypes) throws SQLException, ParseException {
         try (
-                Statement actualStatement = actualConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-                Statement expectedStatement = expectedConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)) {
-            assertTrue("Not a query statement.", actualStatement.execute(getSQL()) && expectedStatement.execute(getSQL()));
-            try (
-                    ResultSet actualResultSet = actualStatement.getResultSet();
-                    ResultSet expectedResultSet = expectedStatement.getResultSet()) {
-                assertResultSet(actualResultSet, expectedResultSet);
-            }
+                Statement actualStatement = 2 == resultSetTypes.length ? actualConnection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : actualConnection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                ResultSet actualResultSet = actualStatement.executeQuery(getSQL());
+                Statement expectedStatement = 2 == resultSetTypes.length ? expectedConnection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : expectedConnection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                ResultSet expectedResultSet = expectedStatement.executeQuery(getSQL())) {
+            assertResultSet(actualResultSet, expectedResultSet);
         }
     }
     
-    private void assertExecuteForPreparedStatementWithResultSetTypeAndResultSetConcurrency(
-                                                                                           final Connection actualConnection, final Connection expectedConnection) throws SQLException, ParseException {
+    private void assertExecuteQueryForPreparedStatementWithResultSetTypes(final Connection actualConnection, final Connection expectedConnection,
+                                                                          final int... resultSetTypes) throws SQLException, ParseException {
         try (
-                PreparedStatement actualPreparedStatement = actualConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
-                PreparedStatement expectedPreparedStatement = expectedConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)) {
+                PreparedStatement actualPreparedStatement = 2 == resultSetTypes.length ? actualConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1])
+                        : actualConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                PreparedStatement expectedPreparedStatement = 2 == resultSetTypes.length ? expectedConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1])
+                        : expectedConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1], resultSetTypes[2])) {
             for (SQLValue each : getAssertion().getSQLValues()) {
                 actualPreparedStatement.setObject(each.getIndex(), each.getValue());
                 expectedPreparedStatement.setObject(each.getIndex(), each.getValue());
             }
-            assertTrue("Not a query statement.", actualPreparedStatement.execute() && expectedPreparedStatement.execute());
             try (
-                    ResultSet actualResultSet = actualPreparedStatement.getResultSet();
-                    ResultSet expectedResultSet = expectedPreparedStatement.getResultSet()) {
+                    ResultSet actualResultSet = actualPreparedStatement.executeQuery();
+                    ResultSet expectedResultSet = expectedPreparedStatement.executeQuery()) {
                 assertResultSet(actualResultSet, expectedResultSet);
             }
         }
     }
     
-    @Test
-    public void assertExecuteWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability() throws SQLException, ParseException {
-        // TODO fix e2e test blocked exception with PostgreSQL or openGuass in #23643
-        if (isPostgreSQLOrOpenGauss(getDatabaseType().getType())) {
+    private void assertExecuteWithXMLExpected(final int... resultSetTypes) throws SQLException, ParseException {
+        // TODO Fix jdbc adapter
+        if ("jdbc".equals(getAdapter())) {
             return;
         }
+        try (
+                Connection connection = getTargetDataSource().getConnection();
+                Statement statement = 2 == resultSetTypes.length ? connection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : connection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2])) {
+            assertTrue("Not a query statement.", statement.execute(getSQL()));
+            ResultSet resultSet = statement.getResultSet();
+            assertResultSet(resultSet);
+        }
+    }
+    
+    private void assertExecuteWithExpectedDataSource(final int... resultSetTypes) throws SQLException, ParseException {
         try (
                 Connection actualConnection = getTargetDataSource().getConnection();
                 Connection expectedConnection = getExpectedDataSource().getConnection()) {
             if (SQLExecuteType.Literal == getSqlExecuteType()) {
-                assertExecuteForStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(actualConnection, expectedConnection);
+                assertExecuteForStatementWithResultSetTypes(actualConnection, expectedConnection, resultSetTypes);
             } else {
-                assertExecuteForPreparedStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(actualConnection, expectedConnection);
+                assertExecuteForPreparedStatementWithResultSetTypes(actualConnection, expectedConnection, resultSetTypes);
             }
         }
     }
     
-    private void assertExecuteForStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(
-                                                                                                          final Connection actualConnection,
-                                                                                                          final Connection expectedConnection) throws SQLException, ParseException {
+    private void assertExecuteForStatementWithResultSetTypes(
+                                                             final Connection actualConnection, final Connection expectedConnection, final int... resultSetTypes) throws SQLException, ParseException {
         try (
-                Statement actualStatement = actualConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
-                Statement expectedStatement = expectedConnection.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT)) {
+                Statement actualStatement = 2 == resultSetTypes.length ? actualConnection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : actualConnection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                Statement expectedStatement = 2 == resultSetTypes.length ? expectedConnection.createStatement(resultSetTypes[0], resultSetTypes[1])
+                        : expectedConnection.createStatement(resultSetTypes[0], resultSetTypes[1], resultSetTypes[2])) {
             assertTrue("Not a query statement.", actualStatement.execute(getSQL()) && expectedStatement.execute(getSQL()));
             try (
                     ResultSet actualResultSet = actualStatement.getResultSet();
@@ -229,13 +209,13 @@ public final class AdditionalDQLE2EIT extends BaseDQLE2EIT {
         }
     }
     
-    private void assertExecuteForPreparedStatementWithResultSetTypeAndResultSetConcurrencyAndResultSetHoldability(
-                                                                                                                  final Connection actualConnection,
-                                                                                                                  final Connection expectedConnection) throws SQLException, ParseException {
+    private void assertExecuteForPreparedStatementWithResultSetTypes(final Connection actualConnection, final Connection expectedConnection,
+                                                                     final int... resultSetTypes) throws SQLException, ParseException {
         try (
-                PreparedStatement actualPreparedStatement = actualConnection.prepareStatement(getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT);
-                PreparedStatement expectedPreparedStatement = expectedConnection.prepareStatement(
-                        getSQL(), ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY, ResultSet.HOLD_CURSORS_OVER_COMMIT)) {
+                PreparedStatement actualPreparedStatement = 2 == resultSetTypes.length ? actualConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1])
+                        : actualConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1], resultSetTypes[2]);
+                PreparedStatement expectedPreparedStatement = 2 == resultSetTypes.length ? expectedConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1])
+                        : expectedConnection.prepareStatement(getSQL(), resultSetTypes[0], resultSetTypes[1], resultSetTypes[2])) {
             for (SQLValue each : getAssertion().getSQLValues()) {
                 actualPreparedStatement.setObject(each.getIndex(), each.getValue());
                 expectedPreparedStatement.setObject(each.getIndex(), each.getValue());
diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/BaseDQLE2EIT.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/BaseDQLE2EIT.java
index 550d2f07576..979e41375d2 100644
--- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/BaseDQLE2EIT.java
+++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/BaseDQLE2EIT.java
@@ -19,6 +19,9 @@ package org.apache.shardingsphere.test.e2e.engine.dql;
 
 import lombok.AccessLevel;
 import lombok.Getter;
+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;
 import org.apache.shardingsphere.test.e2e.engine.SingleE2EIT;
 import org.apache.shardingsphere.test.e2e.env.DataSetEnvironmentManager;
 import org.apache.shardingsphere.test.e2e.env.runtime.scenario.path.ScenarioDataPath;
@@ -36,6 +39,9 @@ import java.sql.SQLException;
 import java.text.ParseException;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
@@ -49,8 +55,13 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
     
     private DataSource expectedDataSource;
     
+    private boolean useXMLAsExpectedDataset;
+    
+    private final String adapter;
+    
     public BaseDQLE2EIT(final AssertionTestParameter testParam) {
         super(testParam);
+        adapter = testParam.getAdapter();
     }
     
     @Before
@@ -59,6 +70,7 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
         expectedDataSource = null == getAssertion().getExpectedDataSourceName() || 1 == getExpectedDataSourceMap().size()
                 ? getExpectedDataSourceMap().values().iterator().next()
                 : getExpectedDataSourceMap().get(getAssertion().getExpectedDataSourceName());
+        useXMLAsExpectedDataset = null != getAssertion().getExpectedDataFile();
     }
     
     private void fillDataOnlyOnce() throws SQLException, ParseException, IOException, JAXBException {
@@ -78,6 +90,27 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
         assertRows(actualResultSet, expectedResultSet);
     }
     
+    protected final void assertResultSet(final ResultSet resultSet) throws SQLException {
+        assertMetaData(resultSet.getMetaData(), getExpectedColumns());
+        assertRows(resultSet, getNotAssertionColumns(), getDataSet().getRows());
+    }
+    
+    private Collection<DataSetColumn> getExpectedColumns() {
+        Collection<DataSetColumn> result = new LinkedList<>();
+        for (DataSetMetaData each : getDataSet().getMetaDataList()) {
+            result.addAll(each.getColumns());
+        }
+        return result;
+    }
+    
+    private Collection<String> getNotAssertionColumns() {
+        Collection<String> result = new LinkedList<>();
+        for (DataSetMetaData each : getDataSet().getMetaDataList()) {
+            result.addAll(each.getColumns().stream().filter(column -> "false".equals(column.getAssertion())).map(DataSetColumn::getName).collect(Collectors.toList()));
+        }
+        return result;
+    }
+    
     private void assertMetaData(final ResultSetMetaData actualResultSetMetaData, final ResultSetMetaData expectedResultSetMetaData) throws SQLException {
         assertThat(actualResultSetMetaData.getColumnCount(), is(expectedResultSetMetaData.getColumnCount()));
         for (int i = 0; i < actualResultSetMetaData.getColumnCount(); i++) {
@@ -85,6 +118,14 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
         }
     }
     
+    private void assertMetaData(final ResultSetMetaData actual, final Collection<DataSetColumn> expected) throws SQLException {
+        assertThat(actual.getColumnCount(), is(expected.size()));
+        int index = 1;
+        for (DataSetColumn each : expected) {
+            assertThat(actual.getColumnLabel(index++).toLowerCase(), is(each.getName().toLowerCase()));
+        }
+    }
+    
     private void assertRows(final ResultSet actualResultSet, final ResultSet expectedResultSet) throws SQLException {
         ResultSetMetaData actualMetaData = actualResultSet.getMetaData();
         ResultSetMetaData expectedMetaData = expectedResultSet.getMetaData();
@@ -95,6 +136,46 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
         assertFalse("Size of actual result set is different with size of expected result set.", expectedResultSet.next());
     }
     
+    private void assertRows(final ResultSet actual, final Collection<String> notAssertionColumns, final List<DataSetRow> expected) throws SQLException {
+        int rowCount = 0;
+        ResultSetMetaData actualMetaData = actual.getMetaData();
+        while (actual.next()) {
+            assertTrue("Size of actual result set is different with size of expected dat set rows.", rowCount < expected.size());
+            DataSetRow expectedRow = getExpectedRowAndRemoveMayNotExistRow(actual, notAssertionColumns, actualMetaData, expected, rowCount);
+            assertRow(actual, notAssertionColumns, actualMetaData, expectedRow);
+            rowCount++;
+        }
+        assertThat("Size of actual result set is different with size of expected dat set rows.", rowCount, is(expected.size()));
+    }
+    
+    private DataSetRow getExpectedRowAndRemoveMayNotExistRow(final ResultSet actual, final Collection<String> notAssertionColumns, final ResultSetMetaData actualMetaData,
+                                                             final List<DataSetRow> expected, final int rowCount) throws SQLException {
+        if (!expected.get(rowCount).isMayNotExist()) {
+            return expected.get(rowCount);
+        }
+        if (isMoveToNextExpectedRow(actual, notAssertionColumns, actualMetaData, expected, rowCount)) {
+            expected.remove(rowCount);
+        } else {
+            return expected.get(rowCount);
+        }
+        return getExpectedRowAndRemoveMayNotExistRow(actual, notAssertionColumns, actualMetaData, expected, rowCount);
+    }
+    
+    private static boolean isMoveToNextExpectedRow(final ResultSet actual, final Collection<String> notAssertionColumns, final ResultSetMetaData actualMetaData,
+                                                   final List<DataSetRow> expected, final int rowCount) throws SQLException {
+        int columnIndex = 1;
+        for (String each : expected.get(rowCount).splitValues("|")) {
+            String columnLabel = actualMetaData.getColumnLabel(columnIndex);
+            if (!notAssertionColumns.contains(columnLabel)) {
+                if (!each.equals(String.valueOf(actual.getObject(columnIndex)).trim()) || !each.equals(String.valueOf(actual.getObject(columnLabel)).trim())) {
+                    return true;
+                }
+            }
+            columnIndex++;
+        }
+        return false;
+    }
+    
     private void assertRow(final ResultSet actualResultSet, final ResultSetMetaData actualMetaData,
                            final ResultSet expectedResultSet, final ResultSetMetaData expectedMetaData) throws SQLException {
         for (int i = 0; i < actualMetaData.getColumnCount(); i++) {
@@ -113,4 +194,20 @@ public abstract class BaseDQLE2EIT extends SingleE2EIT {
             }
         }
     }
+    
+    private void assertRow(final ResultSet actual, final Collection<String> notAssertionColumns, final ResultSetMetaData actualMetaData, final DataSetRow expected) throws SQLException {
+        int columnIndex = 1;
+        for (String each : expected.splitValues("|")) {
+            String columnLabel = actualMetaData.getColumnLabel(columnIndex);
+            if (!notAssertionColumns.contains(columnLabel)) {
+                assertObjectValue(actual, columnIndex, columnLabel, each);
+            }
+            columnIndex++;
+        }
+    }
+    
+    private void assertObjectValue(final ResultSet actual, final int columnIndex, final String columnLabel, final String expected) throws SQLException {
+        assertThat(String.valueOf(actual.getObject(columnIndex)).trim(), is(expected));
+        assertThat(String.valueOf(actual.getObject(columnLabel)).trim(), is(expected));
+    }
 }
diff --git a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/GeneralDQLE2EIT.java b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/GeneralDQLE2EIT.java
index c5d4efddd00..4ae8d014022 100644
--- a/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/GeneralDQLE2EIT.java
+++ b/test/e2e/suite/src/test/java/org/apache/shardingsphere/test/e2e/engine/dql/GeneralDQLE2EIT.java
@@ -51,6 +51,27 @@ public final class GeneralDQLE2EIT extends BaseDQLE2EIT {
     
     @Test
     public void assertExecuteQuery() throws SQLException, ParseException {
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteQueryWithXmlExpected();
+        } else {
+            assertExecuteQueryWithExpectedDataSource();
+        }
+    }
+    
+    private void assertExecuteQueryWithXmlExpected() throws SQLException, ParseException {
+        // TODO Fix jdbc adapter
+        if ("jdbc".equals(getAdapter())) {
+            return;
+        }
+        try (
+                Connection connection = getTargetDataSource().getConnection();
+                Statement statement = connection.createStatement();
+                ResultSet resultSet = statement.executeQuery(getSQL())) {
+            assertResultSet(resultSet);
+        }
+    }
+    
+    private void assertExecuteQueryWithExpectedDataSource() throws SQLException, ParseException {
         try (
                 Connection actualConnection = getTargetDataSource().getConnection();
                 Connection expectedConnection = getExpectedDataSource().getConnection()) {
@@ -90,6 +111,28 @@ public final class GeneralDQLE2EIT extends BaseDQLE2EIT {
     
     @Test
     public void assertExecute() throws SQLException, ParseException {
+        if (isUseXMLAsExpectedDataset()) {
+            assertExecuteWithXmlExpected();
+        } else {
+            assertExecuteWithExpectedDataSource();
+        }
+    }
+    
+    private void assertExecuteWithXmlExpected() throws SQLException, ParseException {
+        // TODO Fix jdbc adapter
+        if ("jdbc".equals(getAdapter())) {
+            return;
+        }
+        try (
+                Connection connection = getTargetDataSource().getConnection();
+                Statement statement = connection.createStatement()) {
+            assertTrue("Not a query statement.", statement.execute(getSQL()));
+            ResultSet resultSet = statement.getResultSet();
+            assertResultSet(resultSet);
+        }
+    }
+    
+    private void assertExecuteWithExpectedDataSource() throws SQLException, ParseException {
         try (
                 Connection actualConnection = getTargetDataSource().getConnection();
                 Connection expectedConnection = getExpectedDataSource().getConnection()) {
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/select_cluster_information.xml b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_cluster_information.xml
similarity index 100%
rename from test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/select_cluster_information.xml
rename to test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_cluster_information.xml
diff --git a/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
new file mode 100644
index 00000000000..961583dadcf
--- /dev/null
+++ b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sharding_table_statistics.xml
@@ -0,0 +1,62 @@
+<!--
+  ~ 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="id" assertion="false" />
+        <column name="logic_database_name" />
+        <column name="logic_table_name" />
+        <column name="actual_database_name" />
+        <column name="actual_table_name" />
+        <column name="row_count" assertion="false" />
+        <column name="size" assertion="false" />
+    </metadata>
+    <row values=" | db |         t_order |         ds_0 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_1 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_2 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_3 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_4 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_5 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_6 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_7 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_8 |         t_order | |     " />
+    <row values=" | db |         t_order |         ds_9 |         t_order | |     " />
+    <row values=" | db |         t_order_item |         ds_0 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_1 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_2 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_3 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_4 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_5 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_6 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_7 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_8 |         t_order_item | |     " />
+    <row values=" | db |         t_order_item |         ds_9 |         t_order_item | |     " />
+    <row values=" | db |         t_order_details|         ds_0 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_1 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_2 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_3 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_4 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_5 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_6 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_7 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_8 |         t_order_details| |     " />
+    <row values=" | db |         t_order_details|         ds_9 |         t_order_details| |     " />
+    <row values=" | db |         t_order_federate_sharding|    ds_0 |         t_order_federate_sharding||   " />
+    <row values=" | db |         t_order_federate_sharding|    ds_1 |         t_order_federate_sharding||   " />
+    <row values=" | db |         t_order_item_federate_sharding | ds_0 |         t_order_item_federate_sharding | | " />
+    <row values=" | db |         t_order_item_federate_sharding | ds_1 |         t_order_item_federate_sharding | | " />
+</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_og.xml b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_og.xml
new file mode 100644
index 00000000000..bdfa0c022e1
--- /dev/null
+++ b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_og.xml
@@ -0,0 +1,44 @@
+<!--
+  ~ 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="Schema" />
+        <column name="Name" />
+        <column name="Type" />
+        <column name="Owner" />
+        <column name="Storage" assertion="false" />
+    </metadata>
+    <row values="public | t_broadcast_table | table | mock user |" />
+    <row values="public | t_country | table | mock user |" />
+    <row values="public | t_merchant | table | mock user |" />
+    <row values="public | t_order | table | mock user |" />
+    <row values="public | t_order_aggregation_view | view | mock user |" mayNotExist="true" />
+    <row values="public | t_order_federate | table | mock user |" />
+    <row values="public | t_order_federate_sharding | table | mock user |" />
+    <row values="public | t_order_item | table | mock user |" />
+    <row values="public | t_order_item_federate | table | mock user |" />
+    <row values="public | t_order_item_federate_sharding | table | mock user |" />
+    <row values="public | t_order_item_join_view | view | mock user |" mayNotExist="true" />
+    <row values="public | t_order_subquery_view | view | mock user |" mayNotExist="true" />
+    <row values="public | t_order_union_view | view | mock user |" mayNotExist="true"/>
+    <row values="public | t_product | table | mock user |" />
+    <row values="public | t_product_category | table | mock user |" />
+    <row values="public | t_product_detail | table | mock user |" />
+    <row values="public | t_single_table | table | mock user |" />
+    <row values="public | t_user | table | mock user |" />
+</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_pg.xml b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_pg.xml
new file mode 100644
index 00000000000..ff889a09e57
--- /dev/null
+++ b/test/e2e/suite/src/test/resources/cases/dql/dataset/db/select_sys_data_for_pg.xml
@@ -0,0 +1,43 @@
+<!--
+  ~ 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="Schema" />
+        <column name="Name" />
+        <column name="Type" />
+        <column name="Owner" />
+    </metadata>
+    <row values="public | t_broadcast_table | table | mock user" />
+    <row values="public | t_country | table | mock user" />
+    <row values="public | t_merchant | table | mock user" />
+    <row values="public | t_order | table | mock user" />
+    <row values="public | t_order_aggregation_view | view | mock user" mayNotExist="true" />
+    <row values="public | t_order_federate | table | mock user" />
+    <row values="public | t_order_federate_sharding | table | mock user" />
+    <row values="public | t_order_item | table | mock user" />
+    <row values="public | t_order_item_federate | table | mock user" />
+    <row values="public | t_order_item_federate_sharding | table | mock user" />
+    <row values="public | t_order_item_join_view | view | mock user" mayNotExist="true" />
+    <row values="public | t_order_subquery_view | view | mock user" mayNotExist="true" />
+    <row values="public | t_order_union_view | view | mock user" mayNotExist="true" />
+    <row values="public | t_product | table | mock user" />
+    <row values="public | t_product_category | table | mock user" />
+    <row values="public | t_product_detail | table | mock user" />
+    <row values="public | t_single_table | table | mock user" />
+    <row values="public | t_user | table | mock user" />
+</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/dql/dql-integration-test-cases.xml b/test/e2e/suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
index 1ca0e3bd40f..7e2c1ebf4df 100644
--- a/test/e2e/suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
+++ b/test/e2e/suite/src/test/resources/cases/dql/dql-integration-test-cases.xml
@@ -1367,4 +1367,20 @@
         <assertion parameters="92233720368547758.07:String" expected-data-source-name="expected_dataset" />
         <assertion parameters="$92233720368547758.07:String" expected-data-source-name="expected_dataset" />
     </test-case>
+
+    <test-case sql="SELECT n.nspname as &quot;Schema&quot;, c.relname as &quot;Name&quot;, CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as &quot;Type&quot;, pg_catalog.pg_get_userbyid(c.relowner) as &quot;Owner&quot; FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_name [...]
+        <assertion expected-data-file="select_sys_data_for_pg.xml" />
+    </test-case>
+
+    <test-case sql="SELECT n.nspname as &quot;Schema&quot;, c.relname as &quot;Name&quot;, CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'I' THEN 'global partition index' WHEN 'S' THEN 'sequence' WHEN 'L' THEN 'large sequence' WHEN 'f' THEN 'foreign table' WHEN 'm' THEN 'materialized view'  WHEN 'e' THEN 'stream' WHEN 'o' THEN 'contview' END as &quot;Type&quot;, pg_catalog.pg_get_userbyid(c.relowner) as &quot;Owner&quot;, c.reloptions as &quot;Stora [...]
+        <assertion expected-data-file="select_sys_data_for_og.xml" />
+    </test-case>
+
+    <test-case sql="select * from shardingsphere.sharding_table_statistics order by id;" db-types="MySQL,PostgreSQL,openGauss" scenario-types="db">
+        <assertion expected-data-file="select_sharding_table_statistics.xml" />
+    </test-case>
+
+    <test-case sql="select * from shardingsphere.cluster_information;" db-types="MySQL,PostgreSQL,openGauss" scenario-types="db">
+        <assertion expected-data-file="select_cluster_information.xml" />
+    </test-case>
 </integration-test-cases>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/mysql/select_sharding_table_statistics.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/mysql/select_sharding_table_statistics.xml
deleted file mode 100644
index 7a298b8f92f..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/mysql/select_sharding_table_statistics.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<!--
-  ~ 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="id" assertion="false" />
-        <column name="logic_database_name" />
-        <column name="logic_table_name" />
-        <column name="actual_database_name" />
-        <column name="actual_table_name" />
-        <column name="row_count" assertion="false" />
-        <column name="size" assertion="false" />
-    </metadata>
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_26 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_1 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_21 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_26 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_19 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_4 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_14 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_29 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_0 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_21 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_6 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_10 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_37 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_34 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_11 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_1 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_20 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_16 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_27 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_6 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_23 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_35 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_5 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_19 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_32 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_28 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_22 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_14 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_30 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_12 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_8 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_23 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_3 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_2 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_30 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_10 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_38 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_32 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_9 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_29 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_4 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_25 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_24 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_13 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_31 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_33 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_17 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_25 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_18 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_33 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_27 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_22 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_39 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_37 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_11 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_0 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_13 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_28 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_35 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_16 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_20 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_17 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_3 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_31 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_38 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_34 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_8 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_12 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_39 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_9 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_18 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_2 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_24 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_5 | | " />
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sharding_table_statistics.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sharding_table_statistics.xml
deleted file mode 100644
index 27139105a49..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sharding_table_statistics.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<!--
-  ~ 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="id" assertion="false" />
-        <column name="logic_database_name" />
-        <column name="logic_table_name" />
-        <column name="actual_database_name" />
-        <column name="actual_table_name" />
-        <column name="row_count" assertion="false" />
-        <column name="size" assertion="false" />
-    </metadata>
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_20 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_16 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_30 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_35 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_10 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_13 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_35 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_10 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_1 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_8 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_11 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_25 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_22 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_27 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_0 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_25 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_34 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_28 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_1 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_29 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_5 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_38 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_32 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_2 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_11 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_38 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_12 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_37 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_0 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_18 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_32 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_34 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_3 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_31 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_14 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_19 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_24 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_29 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_39 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_24 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_33 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_9 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_39 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_12 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_19 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_17 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_13 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_9 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_4 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_21 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_4 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_8 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_14 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_28 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_20 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_26 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_6 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_30 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_23 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_23 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_3 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_17 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_5 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_6 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_27 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_18 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_33 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_22 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_37 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_21 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_16 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_2 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_31 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_26 | | " />
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sys_data_for_og.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sys_data_for_og.xml
deleted file mode 100644
index 852130358de..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/opengauss/select_sys_data_for_og.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-  ~ 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="Schema" />
-        <column name="Name" />
-        <column name="Type" />
-        <column name="Owner" />
-        <column name="Storage" assertion="false" />
-    </metadata>
-    <row values="public | t_single_table | table | mock user |" />
-    <row values="public | t_user | table | mock user |" />
-    <row values="public | t_user_item | table | mock user |" />
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sharding_table_statistics.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sharding_table_statistics.xml
deleted file mode 100644
index 27139105a49..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sharding_table_statistics.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<!--
-  ~ 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="id" assertion="false" />
-        <column name="logic_database_name" />
-        <column name="logic_table_name" />
-        <column name="actual_database_name" />
-        <column name="actual_table_name" />
-        <column name="row_count" assertion="false" />
-        <column name="size" assertion="false" />
-    </metadata>
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_20 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_16 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_30 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_35 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_10 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_13 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_35 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_10 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_1 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_8 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_11 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_25 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_22 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_27 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_0 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_25 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_34 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_28 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_1 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_29 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_5 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_38 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_32 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_2 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_11 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_38 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_12 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_37 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_0 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_18 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_32 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_34 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_3 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_31 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_14 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_19 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_24 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_29 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_39 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_24 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_33 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_9 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_39 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_12 | | " />
-    <row values=" | empty_rules | t_user | write_ds_9 | t_user_19 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_7 | t_user_item_17 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_13 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_9 | t_user_item_9 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_4 | t_user_item_4 | | " />
-    <row values=" | empty_rules | t_user | write_ds_1 | t_user_21 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_4 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_8 | t_user_item_8 | | " />
-    <row values=" | empty_rules | t_user | write_ds_4 | t_user_14 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_28 | | " />
-    <row values=" | empty_rules | t_user | write_ds_0 | t_user_20 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_26 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_6 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_0 | t_user_item_30 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_23 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_23 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_3 | t_user_item_3 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_17 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_7 | | " />
-    <row values=" | empty_rules | t_user | write_ds_5 | t_user_5 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_6 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_27 | | " />
-    <row values=" | empty_rules | t_user | write_ds_8 | t_user_18 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_5 | t_user_item_15 | | " />
-    <row values=" | empty_rules | t_user | write_ds_3 | t_user_33 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_2 | t_user_item_22 | | " />
-    <row values=" | empty_rules | t_user | write_ds_7 | t_user_37 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_21 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_16 | | " />
-    <row values=" | empty_rules | t_user | write_ds_6 | t_user_36 | | " />
-    <row values=" | empty_rules | t_user | write_ds_2 | t_user_2 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_1 | t_user_item_31 | | " />
-    <row values=" | empty_rules | t_user_item | write_ds_6 | t_user_item_26 | | " />
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sys_data_for_pg.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sys_data_for_pg.xml
deleted file mode 100644
index 665af63d088..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/cluster/postgresql/select_sys_data_for_pg.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ 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="Schema" />
-        <column name="Name" />
-        <column name="Type" />
-        <column name="Owner" />
-    </metadata>
-    <row values="public | t_single_table | table | mock user" />
-    <row values="public | t_user | table | mock user" />
-    <row values="public | t_user_item | table | mock user" />
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/select_sharding_table_statistics.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/select_sharding_table_statistics.xml
deleted file mode 100644
index 4f5b677918f..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/select_sharding_table_statistics.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!--
-  ~ 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="id" assertion="false" />
-        <column name="logic_database_name" />
-        <column name="logic_table_name" />
-        <column name="actual_database_name" />
-        <column name="actual_table_name" />
-        <column name="row_count" assertion="false" />
-        <column name="size" assertion="false" />
-    </metadata>
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/opengauss/select_sys_data_for_og.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/opengauss/select_sys_data_for_og.xml
deleted file mode 100644
index fecbb114fbc..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/opengauss/select_sys_data_for_og.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-  ~ 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="Schema" />
-        <column name="Name" />
-        <column name="Type" />
-        <column name="Owner" />
-        <column name="Storage" assertion="false" />
-    </metadata>
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/postgresql/select_sys_data_for_pg.xml b/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/postgresql/select_sys_data_for_pg.xml
deleted file mode 100644
index 4aaec0363b7..00000000000
--- a/test/e2e/suite/src/test/resources/cases/ral/dataset/empty_rules/standalone/postgresql/select_sys_data_for_pg.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  ~ 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="Schema" />
-        <column name="Name" />
-        <column name="Type" />
-        <column name="Owner" />
-    </metadata>
-</dataset>
diff --git a/test/e2e/suite/src/test/resources/cases/ral/ral-integration-test-cases.xml b/test/e2e/suite/src/test/resources/cases/ral/ral-integration-test-cases.xml
index 8b734b4eb71..abdeb5867ab 100644
--- a/test/e2e/suite/src/test/resources/cases/ral/ral-integration-test-cases.xml
+++ b/test/e2e/suite/src/test/resources/cases/ral/ral-integration-test-cases.xml
@@ -90,22 +90,6 @@
         </assertion>
     </test-case>
     
-    <test-case sql="SELECT n.nspname as &quot;Schema&quot;, c.relname as &quot;Name&quot;, CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'm' THEN 'materialized view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' WHEN 'f' THEN 'foreign table' WHEN 'p' THEN 'partitioned table' WHEN 'I' THEN 'partitioned index' END as &quot;Type&quot;, pg_catalog.pg_get_userbyid(c.relowner) as &quot;Owner&quot; FROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_name [...]
-        <assertion expected-data-file="select_sys_data_for_pg.xml" />
-    </test-case>
-
-    <test-case sql="SELECT n.nspname as &quot;Schema&quot;, c.relname as &quot;Name&quot;, CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'I' THEN 'global partition index' WHEN 'S' THEN 'sequence' WHEN 'L' THEN 'large sequence' WHEN 'f' THEN 'foreign table' WHEN 'm' THEN 'materialized view'  WHEN 'e' THEN 'stream' WHEN 'o' THEN 'contview' END as &quot;Type&quot;, pg_catalog.pg_get_userbyid(c.relowner) as &quot;Owner&quot;, c.reloptions as &quot;Stora [...]
-        <assertion expected-data-file="select_sys_data_for_og.xml" />
-    </test-case>
-    
-    <test-case sql="select * from shardingsphere.sharding_table_statistics;" db-types="MySQL,PostgreSQL,openGauss">
-        <assertion expected-data-file="select_sharding_table_statistics.xml" />
-    </test-case>
-
-    <test-case sql="select * from shardingsphere.cluster_information;" db-types="MySQL,PostgreSQL,openGauss">
-        <assertion expected-data-file="select_cluster_information.xml" />
-    </test-case>
-
     <test-case sql="SHOW AUTHORITY RULE;">
         <assertion expected-data-file="show_authority_rule.xml" />
     </test-case>