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 2020/12/30 14:24:47 UTC

[shardingsphere] branch master updated: Use datanode to assert DDL IT (#8838)

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 6f1a0d0  Use datanode to assert DDL IT (#8838)
6f1a0d0 is described below

commit 6f1a0d031f9b08bc9ec7c935022a5026b4e0f1fc
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Dec 30 22:24:32 2020 +0800

    Use datanode to assert DDL IT (#8838)
    
    * Use datanode assert DDL IT
    
    * Merge proxy and jdbc GeneralDDLIT
    
    * Move assertTableMetaData to parent class
    
    * Assert drop table
---
 .../test/integration/cases/dataset/DataSet.java    |  14 +-
 .../test/integration/engine/it/ddl/BaseDDLIT.java  | 123 ++++++++++++++++
 .../{JDBCGeneralDDLIT.java => GeneralDDLIT.java}   |  49 +------
 .../engine/it/ddl/ProxyGeneralDDLIT.java           | 160 ---------------------
 .../cases/ddl/dataset/{ => db}/alter_table.xml     |   2 +-
 .../cases/ddl/dataset/{ => db}/create_index.xml    |   2 +-
 .../cases/ddl/dataset/{ => db}/create_table.xml    |   2 +-
 .../ddl/dataset/{ => db}/create_unique_index.xml   |   2 +-
 .../cases/ddl/dataset/{ => db}/drop_table.xml      |   4 +-
 .../cases/ddl/dataset/{ => db}/unchanged_table.xml |   2 +-
 .../{ => dbtbl_with_replica_query}/alter_table.xml |   2 +-
 .../create_index.xml                               |   2 +-
 .../create_table.xml                               |   2 +-
 .../create_unique_index.xml                        |   2 +-
 .../drop_table.xml}                                |   5 +-
 .../unchanged_table.xml                            |   2 +-
 .../dataset/{ => replica_query}/alter_table.xml    |   2 +-
 .../dataset/{ => replica_query}/create_index.xml   |   2 +-
 .../dataset/{ => replica_query}/create_table.xml   |   2 +-
 .../{ => replica_query}/create_unique_index.xml    |   2 +-
 .../ddl/dataset/{ => replica_query}/drop_table.xml |   4 +-
 .../{ => replica_query}/unchanged_table.xml        |   2 +-
 .../cases/ddl/dataset/{ => shadow}/alter_table.xml |   2 +-
 .../ddl/dataset/{ => shadow}/create_index.xml      |   2 +-
 .../ddl/dataset/{ => shadow}/create_table.xml      |   2 +-
 .../dataset/{ => shadow}/create_unique_index.xml   |   2 +-
 .../cases/ddl/dataset/{ => shadow}/drop_table.xml  |   4 +-
 .../ddl/dataset/{ => shadow}/unchanged_table.xml   |   2 +-
 .../cases/ddl/dataset/{ => tbl}/alter_table.xml    |   2 +-
 .../cases/ddl/dataset/{ => tbl}/create_index.xml   |   2 +-
 .../cases/ddl/dataset/{ => tbl}/create_table.xml   |   2 +-
 .../ddl/dataset/{ => tbl}/create_unique_index.xml  |   2 +-
 .../cases/ddl/dataset/{ => tbl}/drop_table.xml     |   4 +-
 .../ddl/dataset/{ => tbl}/unchanged_table.xml      |   2 +-
 34 files changed, 174 insertions(+), 243 deletions(-)

diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
index 7d62550..b5436ed 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/cases/dataset/DataSet.java
@@ -18,10 +18,10 @@
 package org.apache.shardingsphere.test.integration.cases.dataset;
 
 import lombok.Getter;
+import org.apache.shardingsphere.infra.datanode.DataNode;
+import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
 import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
 import org.apache.shardingsphere.test.integration.cases.dataset.row.DataSetRow;
-import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
-import org.apache.shardingsphere.infra.datanode.DataNode;
 
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
@@ -29,13 +29,11 @@ import javax.xml.bind.annotation.XmlRootElement;
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Optional;
 
 /**
  * Data sets root xml entry.
  */
 @Getter
-//@Setter
 @XmlRootElement(name = "dataset")
 public final class DataSet {
     
@@ -54,15 +52,15 @@ public final class DataSet {
      * @param tableName table name
      * @return data set meta data belong to current table
      */
-    public Optional<DataSetMetadata> findMetadata(final String tableName) {
+    public DataSetMetadata findMetadata(final String tableName) {
         for (DataSetMetadata each : metadataList) {
             if (tableName.equals(each.getTableName())) {
-                return Optional.of(each);
+                return each;
             }
         }
-        return Optional.empty();
+        throw new IllegalArgumentException(String.format("Cannot find expected metadata via table name: '%s'", tableName));
     }
-        
+    
     /**
      * Find data set meta data via data node.
      * 
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
index 3d8408a..e140c96 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/BaseDDLIT.java
@@ -20,8 +20,13 @@ package org.apache.shardingsphere.test.integration.engine.it.ddl;
 import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
+import org.apache.shardingsphere.infra.datanode.DataNode;
+import org.apache.shardingsphere.sharding.algorithm.sharding.inline.InlineExpressionParser;
 import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCaseAssertion;
 import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
+import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
+import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetIndex;
+import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
 import org.apache.shardingsphere.test.integration.engine.it.SingleIT;
 import org.apache.shardingsphere.test.integration.env.EnvironmentPath;
 import org.apache.shardingsphere.test.integration.env.dataset.DataSetEnvironmentManager;
@@ -34,9 +39,19 @@ import org.junit.BeforeClass;
 import javax.xml.bind.JAXBException;
 import java.io.IOException;
 import java.sql.Connection;
+import java.sql.DatabaseMetaData;
 import java.sql.PreparedStatement;
+import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.text.ParseException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
 
 public abstract class BaseDDLIT extends SingleIT {
     
@@ -91,4 +106,112 @@ public abstract class BaseDDLIT extends SingleIT {
         } catch (final SQLException ignored) {
         }
     }
+    
+    protected final void assertTableMetaData() throws SQLException {
+        String tableName = ((DDLIntegrateTestCaseAssertion) getAssertion()).getTable();
+        DataSetMetadata expected = getDataSet().findMetadata(tableName);
+        Collection<DataNode> dataNodes = new InlineExpressionParser(expected.getDataNodes()).splitAndEvaluate().stream().map(DataNode::new).collect(Collectors.toList());
+        if (expected.getColumns().isEmpty()) {
+            assertFalse(containsTable(dataNodes));
+            return;
+        }
+        assertTableMetaData(getActualColumns(dataNodes), getActualIndexes(dataNodes), expected);
+    }
+    
+    private void assertTableMetaData(final List<DataSetColumn> actualColumns, final List<DataSetIndex> actualIndexes, final DataSetMetadata expected) {
+        for (DataSetColumn each : expected.getColumns()) {
+            assertColumnMetaData(actualColumns, each);
+        }
+        for (DataSetIndex each : expected.getIndexes()) {
+            assertIndexMetaData(actualIndexes, each);
+        }
+    }
+    
+    private boolean containsTable(final Collection<DataNode> dataNodes) throws SQLException {
+        for (DataNode each : dataNodes) {
+            try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
+                if (containsTable(connection, each.getTableName())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+    
+    private boolean containsTable(final Connection connection, final String tableName) throws SQLException {
+        return connection.getMetaData().getTables(null, null, tableName, new String[]{"TABLE"}).next();
+    }
+    
+    private List<DataSetColumn> getActualColumns(final Collection<DataNode> dataNodes) throws SQLException {
+        List<DataSetColumn> result = new LinkedList<>();
+        for (DataNode each : dataNodes) {
+            try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
+                result.addAll(getActualColumns(connection, each.getTableName()));
+            }
+        }
+        return result;
+    }
+    
+    private List<DataSetColumn> getActualColumns(final Connection connection, final String tableName) throws SQLException {
+        DatabaseMetaData metaData = connection.getMetaData();
+        try (ResultSet resultSet = metaData.getColumns(null, null, tableName, null)) {
+            List<DataSetColumn> result = new LinkedList<>();
+            while (resultSet.next()) {
+                DataSetColumn each = new DataSetColumn();
+                each.setName(resultSet.getString("COLUMN_NAME"));
+                each.setType(resultSet.getString("TYPE_NAME").toLowerCase());
+                result.add(each);
+            }
+            return result;
+        }
+    }
+    
+    private List<DataSetIndex> getActualIndexes(final Collection<DataNode> dataNodes) throws SQLException {
+        List<DataSetIndex> result = new LinkedList<>();
+        for (DataNode each : dataNodes) {
+            try (Connection connection = getActualDataSources().get(each.getDataSourceName()).getConnection()) {
+                result.addAll(getActualIndexes(connection, each.getTableName()));
+            }
+        }
+        return result;
+    }
+    
+    private List<DataSetIndex> getActualIndexes(final Connection connection, final String tableName) throws SQLException {
+        DatabaseMetaData metaData = connection.getMetaData();
+        try (ResultSet resultSet = metaData.getIndexInfo(null, null, tableName, false, false)) {
+            List<DataSetIndex> result = new LinkedList<>();
+            while (resultSet.next()) {
+                DataSetIndex each = new DataSetIndex();
+                each.setName(resultSet.getString("INDEX_NAME"));
+                each.setUnique(!resultSet.getBoolean("NON_UNIQUE"));
+                each.setColumns(resultSet.getString("COLUMN_NAME"));
+                result.add(each);
+            }
+            return result;
+        }
+    }
+    
+    // TODO need to assert line by line
+    private void assertColumnMetaData(final List<DataSetColumn> actual, final DataSetColumn expect) {
+        for (DataSetColumn each : actual) {
+            if (expect.getName().equals(each.getName())) {
+                if ("MySQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
+                    assertThat(each.getType(), is("int"));
+                } else if ("PostgreSQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
+                    assertThat(each.getType(), is("int4"));
+                } else {
+                    assertThat(each.getType(), is(expect.getType()));
+                }
+            }
+        }
+    }
+    
+    // TODO need to assert line by line
+    private void assertIndexMetaData(final List<DataSetIndex> actual, final DataSetIndex expect) {
+        for (DataSetIndex each : actual) {
+            if (expect.getName().equals(each.getName())) {
+                assertThat(each.isUnique(), is(expect.isUnique()));
+            }
+        }
+    }
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/JDBCGeneralDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
similarity index 50%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/JDBCGeneralDDLIT.java
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
index 25c6b9e..f67ac6e 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/JDBCGeneralDDLIT.java
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/GeneralDDLIT.java
@@ -17,18 +17,11 @@
 
 package org.apache.shardingsphere.test.integration.engine.it.ddl;
 
-import org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
-import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
 import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCaseAssertion;
 import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetIndex;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
-import org.apache.shardingsphere.test.integration.env.IntegrateTestEnvironment;
+import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
 import org.junit.Test;
 import org.junit.runners.Parameterized.Parameters;
 
@@ -38,25 +31,17 @@ import java.sql.Connection;
 import java.sql.SQLException;
 import java.text.ParseException;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
 
-public final class JDBCGeneralDDLIT extends BaseDDLIT {
+public final class GeneralDDLIT extends BaseDDLIT {
     
-    public JDBCGeneralDDLIT(final String parentPath, final DDLIntegrateTestCaseAssertion assertion, final String ruleType,
-                            final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
+    public GeneralDDLIT(final String parentPath, final DDLIntegrateTestCaseAssertion assertion, final String ruleType,
+                        final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
         super(parentPath, assertion, ruleType, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
     }
     
     @Parameters(name = "{2} -> {3} -> {4} -> {5}")
     public static Collection<Object[]> getParameters() {
-        return IntegrateTestEnvironment.getInstance().isProxyEnvironment() ? Collections.emptyList() : IntegrateTestParameters.getParametersWithAssertion(IntegrateTestCaseType.DDL);
+        return IntegrateTestParameters.getParametersWithAssertion(IntegrateTestCaseType.DDL);
     }
     
     @SuppressWarnings("JUnitTestMethodWithNoAssertions")
@@ -68,7 +53,7 @@ public final class JDBCGeneralDDLIT extends BaseDDLIT {
             } else {
                 connection.prepareStatement(getSql()).executeUpdate();
             }
-            assertTableMetaData(((ShardingSphereConnection) connection).getMetaDataContexts().getDefaultMetaData().getSchema());
+            assertTableMetaData();
         }
     }
     
@@ -81,27 +66,7 @@ public final class JDBCGeneralDDLIT extends BaseDDLIT {
             } else {
                 connection.prepareStatement(getSql()).execute();
             }
-            assertTableMetaData(((ShardingSphereConnection) connection).getMetaDataContexts().getDefaultMetaData().getSchema());
-        }
-    }
-    
-    private void assertTableMetaData(final ShardingSphereSchema schema) {
-        String tableName = ((DDLIntegrateTestCaseAssertion) getAssertion()).getTable();
-        Optional<DataSetMetadata> expected = getDataSet().findMetadata(tableName);
-        if (!expected.isPresent()) {
-            assertFalse(schema.containsTable(tableName));
-            return;
-        }
-        TableMetaData actual = schema.get(tableName);
-        assertTableMetaData(actual, expected.get());
-    }
-    
-    private void assertTableMetaData(final TableMetaData actual, final DataSetMetadata expected) {
-        // TODO fill metadata for replica query and other rules
-        if (actual.getColumns().isEmpty()) {
-            return;
+            assertTableMetaData();
         }
-        assertThat(new LinkedList<>(actual.getColumns().keySet()), is(expected.getColumns().stream().map(DataSetColumn::getName).collect(Collectors.toList())));
-        assertThat(new LinkedList<>(actual.getIndexes().keySet()), is(expected.getIndexes().stream().map(DataSetIndex::getName).collect(Collectors.toList())));
     }
 }
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/ProxyGeneralDDLIT.java b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/ProxyGeneralDDLIT.java
deleted file mode 100644
index ef4cfaa..0000000
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/java/org/apache/shardingsphere/test/integration/engine/it/ddl/ProxyGeneralDDLIT.java
+++ /dev/null
@@ -1,160 +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.
- */
-
-package org.apache.shardingsphere.test.integration.engine.it.ddl;
-
-import org.apache.shardingsphere.infra.database.type.DatabaseTypeRegistry;
-import org.apache.shardingsphere.test.integration.cases.IntegrateTestCaseType;
-import org.apache.shardingsphere.test.integration.cases.assertion.ddl.DDLIntegrateTestCaseAssertion;
-import org.apache.shardingsphere.test.integration.cases.assertion.root.SQLCaseType;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetColumn;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetIndex;
-import org.apache.shardingsphere.test.integration.cases.dataset.metadata.DataSetMetadata;
-import org.apache.shardingsphere.test.integration.engine.param.IntegrateTestParameters;
-import org.apache.shardingsphere.test.integration.env.IntegrateTestEnvironment;
-import org.junit.Test;
-import org.junit.runners.Parameterized.Parameters;
-
-import javax.xml.bind.JAXBException;
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.text.ParseException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Optional;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-
-public final class ProxyGeneralDDLIT extends BaseDDLIT {
-    
-    public ProxyGeneralDDLIT(final String parentPath, final DDLIntegrateTestCaseAssertion assertion, final String ruleType,
-                             final String databaseType, final SQLCaseType caseType, final String sql) throws IOException, JAXBException, SQLException, ParseException {
-        super(parentPath, assertion, ruleType, DatabaseTypeRegistry.getActualDatabaseType(databaseType), caseType, sql);
-    }
-    
-    @Parameters(name = "{2} -> {3} -> {4} -> {5}")
-    public static Collection<Object[]> getParameters() {
-        return IntegrateTestEnvironment.getInstance().isProxyEnvironment() ? IntegrateTestParameters.getParametersWithAssertion(IntegrateTestCaseType.DDL) : Collections.emptyList();
-    }
-    
-    @SuppressWarnings("JUnitTestMethodWithNoAssertions")
-    @Test
-    public void assertExecuteUpdate() throws SQLException {
-        try (Connection connection = getTargetDataSource().getConnection()) {
-            if (SQLCaseType.Literal == getCaseType()) {
-                connection.createStatement().executeUpdate(getSql());
-            } else {
-                connection.prepareStatement(getSql()).executeUpdate();
-            }
-            assertTableMetaData(connection);
-        }
-    }
-    
-    @SuppressWarnings("JUnitTestMethodWithNoAssertions")
-    @Test
-    public void assertExecute() throws SQLException {
-        try (Connection connection = getTargetDataSource().getConnection()) {
-            if (SQLCaseType.Literal == getCaseType()) {
-                connection.createStatement().execute(getSql());
-            } else {
-                connection.prepareStatement(getSql()).execute();
-            }
-            assertTableMetaData(connection);
-        }
-    }
-    
-    private void assertTableMetaData(final Connection connection) throws SQLException {
-        String tableName = ((DDLIntegrateTestCaseAssertion) getAssertion()).getTable();
-        Optional<DataSetMetadata> expected = getDataSet().findMetadata(tableName);
-        if (!expected.isPresent()) {
-            assertFalse(containsTable(connection, tableName));
-            return;
-        }
-        assertTableMetaData(getActualColumns(connection, tableName), getActualIndexes(connection, tableName), expected.get());
-    }
-    
-    private void assertTableMetaData(final List<DataSetColumn> actualColumns, final List<DataSetIndex> actualIndexes, final DataSetMetadata expected) {
-        for (DataSetColumn each : expected.getColumns()) {
-            assertColumnMetaData(actualColumns, each);
-        }
-        for (DataSetIndex each : expected.getIndexes()) {
-            assertIndexMetaData(actualIndexes, each);
-        }
-    }
-    
-    private boolean containsTable(final Connection connection, final String tableName) throws SQLException {
-        return connection.getMetaData().getTables(null, null, tableName, new String[] {"TABLE"}).next();
-    }
-    
-    private List<DataSetColumn> getActualColumns(final Connection connection, final String tableName) throws SQLException {
-        DatabaseMetaData metaData = connection.getMetaData();
-        try (ResultSet resultSet = metaData.getColumns(null, null, tableName, null)) {
-            List<DataSetColumn> result = new LinkedList<>();
-            while (resultSet.next()) {
-                DataSetColumn each = new DataSetColumn();
-                each.setName(resultSet.getString("COLUMN_NAME"));
-                each.setType(resultSet.getString("TYPE_NAME").toLowerCase());
-                result.add(each);
-            }
-            return result;
-        }
-    }
-    
-    private List<DataSetIndex> getActualIndexes(final Connection connection, final String tableName) throws SQLException {
-        DatabaseMetaData metaData = connection.getMetaData();
-        try (ResultSet resultSet = metaData.getIndexInfo(null, null, tableName, false, false)) {
-            List<DataSetIndex> result = new LinkedList<>();
-            while (resultSet.next()) {
-                DataSetIndex each = new DataSetIndex();
-                each.setName(resultSet.getString("INDEX_NAME"));
-                each.setUnique(!resultSet.getBoolean("NON_UNIQUE"));
-                each.setColumns(resultSet.getString("COLUMN_NAME"));
-                result.add(each);
-            }
-            return result;
-        }
-    }
-    
-    private void assertColumnMetaData(final List<DataSetColumn> actual, final DataSetColumn expect) {
-        for (DataSetColumn each : actual) {
-            if (expect.getName().equals(each.getName())) {
-                if ("MySQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
-                    assertThat(each.getType(), is("int"));
-                } else if ("PostgreSQL".equals(getDatabaseType().getName()) && "integer".equals(expect.getType())) {
-                    assertThat(each.getType(), is("int4"));
-                } else {
-                    assertThat(each.getType(), is(expect.getType()));
-                }
-            }
-        }
-    }
-    
-    private void assertIndexMetaData(final List<DataSetIndex> actual, final DataSetIndex expect) {
-        for (DataSetIndex each : actual) {
-            if (expect.getName().equals(each.getName())) {
-                assertThat(each.isUnique(), is(expect.isUnique()));
-            }
-        }
-    }
-}
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/alter_table.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/alter_table.xml
index b2e5a1c..1ebee71 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/alter_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <column name="name" type="varchar" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_index.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_index.xml
index f2e9ba7..d3bdabb 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="false" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_table.xml
similarity index 91%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_table.xml
index 305f43f..df61b92 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_unique_index.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_unique_index.xml
index 56360b0..2a08221 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/create_unique_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="true" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/drop_table.xml
similarity index 88%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/drop_table.xml
index f31f346..291ed32 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/drop_table.xml
@@ -15,4 +15,6 @@
   ~ limitations under the License.
   -->
 
-<dataset />
+<dataset>
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details" />
+</dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/unchanged_table.xml
similarity index 91%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/unchanged_table.xml
index 305f43f..df61b92 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/db/unchanged_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db_${0..9}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/alter_table.xml
similarity index 87%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/alter_table.xml
index b2e5a1c..28ebdf9 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/alter_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <column name="name" type="varchar" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_index.xml
similarity index 87%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_index.xml
index f2e9ba7..7495939 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="false" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_table.xml
similarity index 86%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_table.xml
index 305f43f..58f58d8 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_unique_index.xml
similarity index 87%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_unique_index.xml
index 56360b0..9d3ac58 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/create_unique_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="true" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/drop_table.xml
similarity index 84%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/drop_table.xml
index 305f43f..6c392bc 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/drop_table.xml
@@ -16,8 +16,5 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
-        <column name="id" type="integer" />
-        <column name="description" type="varchar" />
-    </metadata>
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}" />
 </dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/unchanged_table.xml
similarity index 86%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/unchanged_table.xml
index 305f43f..58f58d8 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/dbtbl_with_replica_query/unchanged_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds_${0..9}.t_order_details_${0..9},replica_ds_${0..9}.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/alter_table.xml
similarity index 89%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/alter_table.xml
index b2e5a1c..4cf8a48 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/alter_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <column name="name" type="varchar" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_index.xml
similarity index 90%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_index.xml
index f2e9ba7..8d8b633 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="false" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_table.xml
similarity index 89%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_table.xml
index 305f43f..8abcd47 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_unique_index.xml
similarity index 90%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_unique_index.xml
index 56360b0..2afd2ed 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/create_unique_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="true" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/drop_table.xml
similarity index 85%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/drop_table.xml
index f31f346..a86665c 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/drop_table.xml
@@ -15,4 +15,6 @@
   ~ limitations under the License.
   -->
 
-<dataset />
+<dataset>
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details" />
+</dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/unchanged_table.xml
similarity index 89%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/unchanged_table.xml
index 305f43f..8abcd47 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/replica_query/unchanged_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="primary_ds.t_order_details,replica_${0..1}.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/alter_table.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/alter_table.xml
index b2e5a1c..f5851f7 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/alter_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <column name="name" type="varchar" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_index.xml
similarity index 93%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_index.xml
index f2e9ba7..fa32ceb 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="false" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_table.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_table.xml
index 305f43f..8609dd3 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_unique_index.xml
similarity index 93%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_unique_index.xml
index 56360b0..2088acc 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/create_unique_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="true" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/drop_table.xml
similarity index 89%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/drop_table.xml
index f31f346..0c009dd 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/drop_table.xml
@@ -15,4 +15,6 @@
   ~ limitations under the License.
   -->
 
-<dataset />
+<dataset>
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details" />
+</dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/unchanged_table.xml
similarity index 92%
copy from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
copy to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/unchanged_table.xml
index 305f43f..8609dd3 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/shadow/unchanged_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="db.t_order_details">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/alter_table.xml
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/alter_table.xml
index b2e5a1c..57e5caf 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/alter_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/alter_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <column name="name" type="varchar" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_index.xml
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_index.xml
index f2e9ba7..2da3e39 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="false" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_table.xml
similarity index 91%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_table.xml
index 305f43f..3e16b51 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_unique_index.xml
similarity index 92%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_unique_index.xml
index 56360b0..f2ddb2c 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/create_unique_index.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/create_unique_index.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
         <index name="t_order_details_index_t_order_details" column="id" unique="true" />
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/drop_table.xml
similarity index 88%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/drop_table.xml
index f31f346..a433cdd 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/drop_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/drop_table.xml
@@ -15,4 +15,6 @@
   ~ limitations under the License.
   -->
 
-<dataset />
+<dataset>
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}" />
+</dataset>
diff --git a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/unchanged_table.xml
similarity index 91%
rename from shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
rename to shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/unchanged_table.xml
index 305f43f..3e16b51 100644
--- a/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/unchanged_table.xml
+++ b/shardingsphere-test/shardingsphere-integration-test/shardingsphere-test-suite/src/test/resources/integrate/cases/ddl/dataset/tbl/unchanged_table.xml
@@ -16,7 +16,7 @@
   -->
 
 <dataset>
-    <metadata table-name="t_order_details">
+    <metadata table-name="t_order_details" data-nodes="tbl.t_order_details_${0..9}">
         <column name="id" type="integer" />
         <column name="description" type="varchar" />
     </metadata>