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

chengzhang 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 52f021aabdc Remove useless EqualsAndHashCode in ColumnMetaData, 
ShardingSphereColumn and other objects (#34007)
52f021aabdc is described below

commit 52f021aabdcf607481825fced230f537d06bd1e2
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Wed Dec 11 15:13:09 2024 +0800

    Remove useless EqualsAndHashCode in ColumnMetaData, ShardingSphereColumn 
and other objects (#34007)
    
    * Remove useless EqualsAndHashCode in ColumnMetaData, ShardingSphereColumn 
and other objects
    
    * fix unit test
    
    * fix unit test
    
    * fix unit test
---
 .../metadata/EncryptMetaDataReviseEngineTest.java  | 15 +++++--
 .../metadata/ShardingMetaDataReviseEngineTest.java | 15 +++++--
 .../schema/builder/GenericSchemaBuilder.java       | 44 ++-----------------
 .../schema/model/ShardingSphereColumn.java         |  2 -
 .../schema/model/ShardingSphereConstraint.java     |  3 --
 .../database/schema/model/ShardingSphereIndex.java |  2 -
 .../database/schema/model/ShardingSphereTable.java |  5 ++-
 .../database/schema/model/ShardingSphereView.java  |  2 -
 .../schema/reviser/MetaDataReviseEngine.java       | 43 ++++++++++++++++---
 .../schema/reviser/column/ColumnReviseEngine.java  |  4 +-
 .../reviser/constraint/ConstraintReviseEngine.java |  5 +--
 .../schema/reviser/index/IndexReviseEngine.java    |  5 +--
 .../schema/model/ShardingSphereTableTest.java      | 11 -----
 .../constraint/ConstraintReviseEngineTest.java     | 10 ++++-
 .../reviser/index/IndexReviseEngineTest.java       | 13 +++++-
 .../schema/SchemaMetaDataReviseEngineTest.java     | 40 +++++++++++++++++-
 .../core/metadata/data/model/ColumnMetaData.java   |  2 -
 .../metadata/data/model/ConstraintMetaData.java    |  2 -
 .../core/metadata/data/model/IndexMetaData.java    |  2 -
 .../core/metadata/data/model/SchemaMetaData.java   |  2 -
 .../core/metadata/data/model/TableMetaData.java    |  2 -
 .../metadata/data/loader/H2MetaDataLoaderTest.java | 23 ++++++++--
 .../data/loader/MySQLMetaDataLoaderTest.java       | 37 +++++++++++-----
 .../data/loader/OpenGaussMetaDataLoaderTest.java   | 23 ++++++++--
 .../data/loader/OracleMetaDataLoaderTest.java      | 49 +++++++++++++++-------
 .../data/loader/PostgreSQLMetaDataLoaderTest.java  | 30 +++++++++++--
 .../data/loader/SQLServerMetaDataLoaderTest.java   | 35 ++++++++++++----
 .../metadata/SingleMetaDataReviseEngineTest.java   | 45 +++++++++++++++-----
 28 files changed, 318 insertions(+), 153 deletions(-)

diff --git 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataReviseEngineTest.java
 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataReviseEngineTest.java
index 527a8a70995..ab13b21a876 100644
--- 
a/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataReviseEngineTest.java
+++ 
b/features/encrypt/core/src/test/java/org/apache/shardingsphere/encrypt/metadata/EncryptMetaDataReviseEngineTest.java
@@ -23,6 +23,9 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnM
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEngine;
 import org.junit.jupiter.api.Test;
 
@@ -37,6 +40,7 @@ import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -46,10 +50,13 @@ class EncryptMetaDataReviseEngineTest {
     @Test
     void assertRevise() {
         Map<String, SchemaMetaData> schemaMetaData = 
Collections.singletonMap("foo_db", new SchemaMetaData("foo_db", 
Collections.singleton(createTableMetaData())));
-        TableMetaData actual = new MetaDataReviseEngine(
-                
Collections.singleton(mockEncryptRule())).revise(schemaMetaData, 
mock(GenericSchemaBuilderMaterial.class)).get("foo_db").getTables().iterator().next();
-        assertThat(actual.getColumns().size(), is(2));
-        List<ColumnMetaData> columns = new ArrayList<>(actual.getColumns());
+        Map<String, ShardingSphereSchema> actual = new 
MetaDataReviseEngine(Collections.singleton(mockEncryptRule())).revise(schemaMetaData,
 mock(GenericSchemaBuilderMaterial.class));
+        assertThat(actual.size(), is(1));
+        assertTrue(actual.containsKey("foo_db"));
+        assertThat(actual.get("foo_db").getAllTables().size(), is(1));
+        ShardingSphereTable table = 
actual.get("foo_db").getAllTables().iterator().next();
+        assertThat(table.getAllColumns().size(), is(2));
+        List<ShardingSphereColumn> columns = new 
ArrayList<>(table.getAllColumns());
         assertThat(columns.get(0).getName(), is("id"));
         assertThat(columns.get(1).getName(), is("pwd"));
     }
diff --git 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataReviseEngineTest.java
 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataReviseEngineTest.java
index ead7f28b81c..9adb5e57611 100644
--- 
a/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataReviseEngineTest.java
+++ 
b/features/sharding/core/src/test/java/org/apache/shardingsphere/sharding/metadata/ShardingMetaDataReviseEngineTest.java
@@ -22,6 +22,9 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnM
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEngine;
 import org.apache.shardingsphere.infra.rule.attribute.RuleAttributes;
 import 
org.apache.shardingsphere.infra.rule.attribute.datanode.DataNodeRuleAttribute;
@@ -37,6 +40,8 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
@@ -48,9 +53,13 @@ class ShardingMetaDataReviseEngineTest {
     void assertReviseWithKeyGenerateStrategy() {
         GenericSchemaBuilderMaterial material = 
mock(GenericSchemaBuilderMaterial.class);
         when(material.getProps()).thenReturn(new ConfigurationProperties(new 
Properties()));
-        Map<String, SchemaMetaData> actual = new 
MetaDataReviseEngine(Collections.singleton(mockShardingRule())).revise(Collections.singletonMap("sharding_db",
-                new SchemaMetaData("sharding_db", 
Collections.singleton(createTableMetaData()))), material);
-        Iterator<ColumnMetaData> columns = 
actual.get("sharding_db").getTables().iterator().next().getColumns().iterator();
+        Map<String, ShardingSphereSchema> actual = new 
MetaDataReviseEngine(Collections.singleton(mockShardingRule()))
+                .revise(Collections.singletonMap("sharding_db", new 
SchemaMetaData("sharding_db", Collections.singleton(createTableMetaData()))), 
material);
+        assertThat(actual.size(), is(1));
+        assertTrue(actual.containsKey("sharding_db"));
+        assertThat(actual.get("sharding_db").getAllTables().size(), is(1));
+        ShardingSphereTable table = 
actual.get("sharding_db").getAllTables().iterator().next();
+        Iterator<ShardingSphereColumn> columns = 
table.getAllColumns().iterator();
         assertTrue(columns.next().isGenerated());
         assertFalse(columns.next().isGenerated());
         assertFalse(columns.next().isGenerated());
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
index 4d8fb929da5..603c1be4ed3 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/builder/GenericSchemaBuilder.java
@@ -22,19 +22,12 @@ import lombok.NoArgsConstructor;
 import org.apache.shardingsphere.infra.config.props.ConfigurationPropertyKey;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoader;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.loader.MetaDataLoaderMaterial;
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnMetaData;
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ConstraintMetaData;
-import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseType;
 import org.apache.shardingsphere.infra.database.core.type.DatabaseTypeRegistry;
 import 
org.apache.shardingsphere.infra.metadata.database.resource.unit.StorageUnit;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereConstraint;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEngine;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.util.SchemaMetaDataUtils;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
@@ -47,9 +40,7 @@ import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.Map;
-import java.util.Map.Entry;
 import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 /**
@@ -118,37 +109,8 @@ public final class GenericSchemaBuilder {
     }
     
     private static Map<String, ShardingSphereSchema> revise(final Map<String, 
SchemaMetaData> schemaMetaDataMap, final GenericSchemaBuilderMaterial material) 
{
-        Map<String, SchemaMetaData> result = new 
LinkedHashMap<>(schemaMetaDataMap);
-        result.putAll(new MetaDataReviseEngine(material.getRules().stream()
-                .filter(each -> 
each.getAttributes().findAttribute(TableMapperRuleAttribute.class).isPresent()).collect(Collectors.toList())).revise(result,
 material));
-        return convertToSchemaMap(result, material);
-    }
-    
-    private static Map<String, ShardingSphereSchema> convertToSchemaMap(final 
Map<String, SchemaMetaData> schemaMetaDataMap, final 
GenericSchemaBuilderMaterial material) {
-        if (schemaMetaDataMap.isEmpty()) {
-            return Collections.singletonMap(material.getDefaultSchemaName(), 
new ShardingSphereSchema(material.getDefaultSchemaName()));
-        }
-        Map<String, ShardingSphereSchema> result = new 
ConcurrentHashMap<>(schemaMetaDataMap.size(), 1F);
-        for (Entry<String, SchemaMetaData> entry : 
schemaMetaDataMap.entrySet()) {
-            result.put(entry.getKey().toLowerCase(), new 
ShardingSphereSchema(entry.getKey(), 
convertToTables(entry.getValue().getTables()), new LinkedList<>()));
-        }
-        return result;
-    }
-    
-    private static Collection<ShardingSphereTable> convertToTables(final 
Collection<TableMetaData> tableMetaDataList) {
-        return tableMetaDataList.stream().map(each -> new ShardingSphereTable(
-                each.getName(), convertToColumns(each.getColumns()), 
convertToIndexes(each.getIndexes()), 
convertToConstraints(each.getConstraints()), 
each.getType())).collect(Collectors.toList());
-    }
-    
-    private static Collection<ShardingSphereColumn> convertToColumns(final 
Collection<ColumnMetaData> columnMetaDataList) {
-        return 
columnMetaDataList.stream().map(ShardingSphereColumn::new).collect(Collectors.toList());
-    }
-    
-    private static Collection<ShardingSphereIndex> convertToIndexes(final 
Collection<IndexMetaData> indexMetaDataList) {
-        return 
indexMetaDataList.stream().map(ShardingSphereIndex::new).collect(Collectors.toList());
-    }
-    
-    private static Collection<ShardingSphereConstraint> 
convertToConstraints(final Collection<ConstraintMetaData> 
constraintMetaDataList) {
-        return 
constraintMetaDataList.stream().map(ShardingSphereConstraint::new).collect(Collectors.toList());
+        Collection<ShardingSphereRule> rules = material.getRules().stream()
+                .filter(each -> 
each.getAttributes().findAttribute(TableMapperRuleAttribute.class).isPresent()).collect(Collectors.toList());
+        return new MetaDataReviseEngine(rules).revise(schemaMetaDataMap, 
material);
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereColumn.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereColumn.java
index 35c69931b77..d34c39a8716 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereColumn.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereColumn.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.metadata.database.schema.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -28,7 +27,6 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnM
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ShardingSphereColumn {
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereConstraint.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereConstraint.java
index 914a6621b85..2edc4ea45d9 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereConstraint.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereConstraint.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.metadata.database.schema.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -28,7 +27,6 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.Constra
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ShardingSphereConstraint {
     
@@ -39,6 +37,5 @@ public final class ShardingSphereConstraint {
     public ShardingSphereConstraint(final ConstraintMetaData 
constraintMetaData) {
         name = constraintMetaData.getName();
         referencedTableName = constraintMetaData.getReferencedTableName();
-        
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereIndex.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereIndex.java
index 9ab59867ad4..8835a151093 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereIndex.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereIndex.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.metadata.database.schema.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -30,7 +29,6 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ShardingSphereIndex {
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
index 25ec5d33a0a..ac4c9ee3702 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTable.java
@@ -19,7 +19,6 @@ package 
org.apache.shardingsphere.infra.metadata.database.schema.model;
 
 import com.cedarsoftware.util.CaseInsensitiveMap;
 import lombok.AccessLevel;
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.ToString;
 import 
org.apache.shardingsphere.infra.database.core.metadata.database.enums.TableType;
@@ -38,7 +37,6 @@ import java.util.stream.Collectors;
  * ShardingSphere table.
  */
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ShardingSphereTable {
     
@@ -82,6 +80,9 @@ public final class ShardingSphereTable {
         int index = 0;
         for (ShardingSphereColumn each : columns) {
             ShardingSphereIdentifier columnName = new 
ShardingSphereIdentifier(each.getName());
+            if (result.containsKey(columnName)) {
+                continue;
+            }
             result.put(columnName, each);
             columnNames.add(columnName);
             if (each.isPrimaryKey()) {
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereView.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereView.java
index e03d1a3918d..f90c97fb103 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereView.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereView.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.metadata.database.schema.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -27,7 +26,6 @@ import lombok.ToString;
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ShardingSphereView {
     
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEngine.java
index 798922e32b8..5b6e72cba6d 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/MetaDataReviseEngine.java
@@ -18,15 +18,27 @@
 package org.apache.shardingsphere.infra.metadata.database.schema.reviser;
 
 import lombok.RequiredArgsConstructor;
+import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ColumnMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ConstraintMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
+import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereConstraint;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.schema.SchemaMetaDataReviseEngine;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.util.Collection;
-import java.util.LinkedHashMap;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.stream.Collectors;
 
 /**
  * Meta data revise engine.
@@ -41,13 +53,34 @@ public final class MetaDataReviseEngine {
      *
      * @param schemaMetaDataMap schema meta data map
      * @param material generic schema builder material
-     * @return revised meta data
+     * @return ShardingSphere schema map
      */
-    public Map<String, SchemaMetaData> revise(final Map<String, 
SchemaMetaData> schemaMetaDataMap, final GenericSchemaBuilderMaterial material) 
{
-        Map<String, SchemaMetaData> result = new 
LinkedHashMap<>(schemaMetaDataMap.size(), 1F);
+    public Map<String, ShardingSphereSchema> revise(final Map<String, 
SchemaMetaData> schemaMetaDataMap, final GenericSchemaBuilderMaterial material) 
{
+        if (schemaMetaDataMap.isEmpty()) {
+            return Collections.singletonMap(material.getDefaultSchemaName(), 
new ShardingSphereSchema(material.getDefaultSchemaName()));
+        }
+        Map<String, ShardingSphereSchema> result = new 
HashMap<>(schemaMetaDataMap.size(), 1F);
         for (Entry<String, SchemaMetaData> entry : 
schemaMetaDataMap.entrySet()) {
-            result.put(entry.getKey(), new SchemaMetaDataReviseEngine(rules, 
material.getProps()).revise(entry.getValue()));
+            SchemaMetaData schemaMetaData = new 
SchemaMetaDataReviseEngine(rules, material.getProps()).revise(entry.getValue());
+            result.put(entry.getKey(), new 
ShardingSphereSchema(entry.getKey(), 
convertToTables(schemaMetaData.getTables()), new LinkedList<>()));
         }
         return result;
     }
+    
+    private Collection<ShardingSphereTable> convertToTables(final 
Collection<TableMetaData> tableMetaDataList) {
+        return tableMetaDataList.stream().map(each -> new ShardingSphereTable(
+                each.getName(), convertToColumns(each.getColumns()), 
convertToIndexes(each.getIndexes()), 
convertToConstraints(each.getConstraints()), 
each.getType())).collect(Collectors.toList());
+    }
+    
+    private Collection<ShardingSphereColumn> convertToColumns(final 
Collection<ColumnMetaData> columnMetaDataList) {
+        return 
columnMetaDataList.stream().map(ShardingSphereColumn::new).collect(Collectors.toList());
+    }
+    
+    private Collection<ShardingSphereIndex> convertToIndexes(final 
Collection<IndexMetaData> indexMetaDataList) {
+        return 
indexMetaDataList.stream().map(ShardingSphereIndex::new).collect(Collectors.toList());
+    }
+    
+    private Collection<ShardingSphereConstraint> convertToConstraints(final 
Collection<ConstraintMetaData> constraintMetaDataList) {
+        return 
constraintMetaDataList.stream().map(ShardingSphereConstraint::new).collect(Collectors.toList());
+    }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/column/ColumnReviseEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/column/ColumnReviseEngine.java
index dc744ef076b..0ea76a8e714 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/column/ColumnReviseEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/column/ColumnReviseEngine.java
@@ -23,7 +23,7 @@ import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaData
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
+import java.util.LinkedList;
 import java.util.Optional;
 
 /**
@@ -49,7 +49,7 @@ public final class ColumnReviseEngine<T extends 
ShardingSphereRule> {
         Optional<? extends ColumnExistedReviser> existedReviser = 
reviseEntry.getColumnExistedReviser(rule, tableName);
         Optional<? extends ColumnNameReviser> nameReviser = 
reviseEntry.getColumnNameReviser(rule, tableName);
         Optional<? extends ColumnGeneratedReviser> generatedReviser = 
reviseEntry.getColumnGeneratedReviser(rule, tableName);
-        Collection<ColumnMetaData> result = new LinkedHashSet<>();
+        Collection<ColumnMetaData> result = new LinkedList<>();
         for (ColumnMetaData each : originalMetaDataList) {
             if (existedReviser.isPresent() && 
!existedReviser.get().isExisted(each.getName())) {
                 continue;
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngine.java
index e6a79060c18..20c4187b3a9 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngine.java
@@ -18,12 +18,11 @@
 package 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.constraint;
 
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.ConstraintMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -50,7 +49,7 @@ public final class ConstraintReviseEngine<T extends 
ShardingSphereRule> {
         Optional<? extends ConstraintReviser<T>> reviser = 
reviseEntry.getConstraintReviser(rule, tableName);
         return reviser.isPresent()
                 ? originalMetaDataList.stream()
-                        .map(each -> reviser.get().revise(tableName, each, 
rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toCollection(LinkedHashSet::new))
+                        .map(each -> reviser.get().revise(tableName, each, 
rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList())
                 : originalMetaDataList;
     }
 }
diff --git 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngine.java
 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngine.java
index b260cad25c7..0e4ae1492ca 100644
--- 
a/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngine.java
+++ 
b/infra/common/src/main/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngine.java
@@ -18,12 +18,11 @@
 package org.apache.shardingsphere.infra.metadata.database.schema.reviser.index;
 
 import lombok.RequiredArgsConstructor;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMetaData;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEntry;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 
 import java.util.Collection;
-import java.util.LinkedHashSet;
 import java.util.Optional;
 import java.util.stream.Collectors;
 
@@ -50,7 +49,7 @@ public final class IndexReviseEngine<T extends 
ShardingSphereRule> {
         Optional<? extends IndexReviser<T>> reviser = 
reviseEntry.getIndexReviser(rule, tableName);
         return reviser.isPresent()
                 ? originalMetaDataList.stream()
-                        .map(each -> reviser.get().revise(tableName, each, 
rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toCollection(LinkedHashSet::new))
+                        .map(each -> reviser.get().revise(tableName, each, 
rule)).filter(Optional::isPresent).map(Optional::get).collect(Collectors.toList())
                 : originalMetaDataList;
     }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTableTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTableTest.java
index 3090050d707..cbc07095b33 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTableTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/model/ShardingSphereTableTest.java
@@ -132,15 +132,4 @@ class ShardingSphereTableTest {
         assertThat(table.getAllConstraints(), hasItems(constraint));
         assertThat(table.getAllConstraints().size(), is(1));
     }
-    
-    @Test
-    void assertEquals() {
-        ShardingSphereTable table1 = new ShardingSphereTable("foo_tbl",
-                Collections.singleton(new ShardingSphereColumn("foo_col", 
Types.INTEGER, true, true, false, true, false, false)),
-                Collections.singleton(new ShardingSphereIndex("foo_idx", 
Collections.emptyList(), false)), Collections.emptyList());
-        ShardingSphereTable table2 = new ShardingSphereTable("foo_tbl",
-                Collections.singleton(new ShardingSphereColumn("foo_col", 
Types.INTEGER, true, true, false, true, false, false)),
-                Collections.singleton(new ShardingSphereIndex("foo_idx", 
Collections.emptyList(), false)), Collections.emptyList());
-        assertThat(table1, is(table2));
-    }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngineTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngineTest.java
index c629d74fa57..b104dd93fc6 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngineTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/constraint/ConstraintReviseEngineTest.java
@@ -28,7 +28,6 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Optional;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -68,6 +67,13 @@ class ConstraintReviseEngineTest {
         ConstraintMetaData constraint3 = new ConstraintMetaData("constraint3", 
tableName);
         when(reviser.revise(tableName, constraint1, 
mockRule)).thenReturn(Optional.of(constraint3));
         when(reviser.revise(tableName, constraint2, 
mockRule)).thenReturn(Optional.empty());
-        assertThat(engine.revise(tableName, Arrays.asList(constraint1, 
constraint2)), is(Collections.singleton(constraint3)));
+        Collection<ConstraintMetaData> actual = engine.revise(tableName, 
Arrays.asList(constraint1, constraint2));
+        assertThat(actual.size(), is(1));
+        assertConstraintMetaData(actual.iterator().next(), constraint3);
+    }
+    
+    private void assertConstraintMetaData(final ConstraintMetaData actual, 
final ConstraintMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getReferencedTableName(), 
is(expected.getReferencedTableName()));
     }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngineTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngineTest.java
index 6f06b802cbe..b90263b67f1 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngineTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/index/IndexReviseEngineTest.java
@@ -51,7 +51,8 @@ class IndexReviseEngineTest {
     void assertReviseWithoutIndexReviser() {
         when(metaDataReviseEntry.getIndexReviser(any(), 
eq("foo_tbl"))).thenReturn(Optional.empty());
         Collection<IndexMetaData> actual = indexReviseEngine.revise("foo_tbl", 
Collections.singleton(new IndexMetaData("foo_idx")));
-        assertThat(actual, is(Collections.singleton(new 
IndexMetaData("foo_idx"))));
+        assertThat(actual.size(), is(1));
+        assertIndexMetaData(actual.iterator().next(), new 
IndexMetaData("foo_idx"));
     }
     
     @Test
@@ -60,6 +61,14 @@ class IndexReviseEngineTest {
         when(reviser.revise(eq("foo_tbl"), any(), 
any())).thenReturn(Optional.of(new IndexMetaData("foo_idx")));
         when(metaDataReviseEntry.getIndexReviser(any(), 
eq("foo_tbl"))).thenReturn(Optional.of(reviser));
         Collection<IndexMetaData> actual = indexReviseEngine.revise("foo_tbl", 
Arrays.asList(new IndexMetaData("idx_0"), new IndexMetaData("idx_1")));
-        assertThat(actual, is(Collections.singleton(new 
IndexMetaData("foo_idx"))));
+        assertThat(actual.size(), is(2));
+        assertIndexMetaData(actual.iterator().next(), new 
IndexMetaData("foo_idx"));
+        assertIndexMetaData(actual.iterator().next(), new 
IndexMetaData("foo_idx"));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
index b9b2f4e6efc..bb3fd5282d6 100644
--- 
a/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
+++ 
b/infra/common/src/test/java/org/apache/shardingsphere/infra/metadata/database/schema/reviser/schema/SchemaMetaDataReviseEngineTest.java
@@ -30,6 +30,7 @@ import java.sql.Types;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.Properties;
 
@@ -54,7 +55,9 @@ class SchemaMetaDataReviseEngineTest {
         SchemaMetaData actual = new SchemaMetaDataReviseEngine(
                 Collections.singleton(new FixtureGlobalRule()), new 
ConfigurationProperties(new Properties())).revise(schemaMetaData);
         assertThat(actual.getName(), is(schemaMetaData.getName()));
-        assertThat(actual.getTables(), is(schemaMetaData.getTables()));
+        assertThat(actual.getTables().size(), 
is(schemaMetaData.getTables().size()));
+        Iterator<TableMetaData> expectedTableIterator = 
schemaMetaData.getTables().iterator();
+        actual.getTables().forEach(each -> assertTableMetaData(each, 
expectedTableIterator.next()));
     }
     
     private TableMetaData createTableMetaData() {
@@ -66,4 +69,39 @@ class SchemaMetaDataReviseEngineTest {
         return new TableMetaData("table_name", columns, 
Collections.singletonList(indexMetaData), 
Collections.singleton(constraintMetaData));
     }
     
+    private void assertTableMetaData(final TableMetaData actual, final 
TableMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns().size(), 
is(expected.getColumns().size()));
+        assertThat(actual.getIndexes().size(), 
is(expected.getIndexes().size()));
+        assertThat(actual.getConstraints().size(), 
is(expected.getConstraints().size()));
+        assertThat(actual.getType(), is(expected.getType()));
+        Iterator<ColumnMetaData> expectedColumnIterator = 
expected.getColumns().iterator();
+        actual.getColumns().forEach(each -> assertColumnMetaData(each, 
expectedColumnIterator.next()));
+        Iterator<IndexMetaData> expectedIndexIterator = 
expected.getIndexes().iterator();
+        actual.getIndexes().forEach(each -> assertIndexMetaData(each, 
expectedIndexIterator.next()));
+        Iterator<ConstraintMetaData> expectedConstraintIterator = 
expected.getConstraints().iterator();
+        actual.getConstraints().forEach(each -> assertConstraintMetaData(each, 
expectedConstraintIterator.next()));
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
+    }
+    
+    private void assertConstraintMetaData(final ConstraintMetaData actual, 
final ConstraintMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getReferencedTableName(), 
is(expected.getReferencedTableName()));
+    }
 }
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ColumnMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ColumnMetaData.java
index 00f6c6b42af..cdc6c8930e5 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ColumnMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ColumnMetaData.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.database.core.metadata.data.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -27,7 +26,6 @@ import lombok.ToString;
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ColumnMetaData {
     
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ConstraintMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ConstraintMetaData.java
index fded837be65..946d45c4ec6 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ConstraintMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/ConstraintMetaData.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.database.core.metadata.data.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -27,7 +26,6 @@ import lombok.ToString;
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class ConstraintMetaData {
     
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/IndexMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/IndexMetaData.java
index d50313e80c5..139e35b5c07 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/IndexMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/IndexMetaData.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.database.core.metadata.data.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.Setter;
@@ -32,7 +31,6 @@ import java.util.LinkedList;
 @RequiredArgsConstructor
 @Getter
 @Setter
-@EqualsAndHashCode
 @ToString
 public final class IndexMetaData {
     
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/SchemaMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/SchemaMetaData.java
index c8efe6d8065..844fdecea40 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/SchemaMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/SchemaMetaData.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.database.core.metadata.data.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -29,7 +28,6 @@ import java.util.Collection;
 */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class SchemaMetaData {
     
diff --git 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/TableMetaData.java
 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/TableMetaData.java
index 7652306dbba..bdc5a491839 100644
--- 
a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/TableMetaData.java
+++ 
b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/data/model/TableMetaData.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.infra.database.core.metadata.data.model;
 
-import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.ToString;
@@ -30,7 +29,6 @@ import java.util.Collection;
  */
 @RequiredArgsConstructor
 @Getter
-@EqualsAndHashCode
 @ToString
 public final class TableMetaData {
     
diff --git 
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/metadata/data/loader/H2MetaDataLoaderTest.java
 
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/metadata/data/loader/H2MetaDataLoaderTest.java
index d670edec93e..a445bfcc5ac 100644
--- 
a/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/metadata/data/loader/H2MetaDataLoaderTest.java
+++ 
b/infra/database/type/h2/src/test/java/org/apache/shardingsphere/infra/database/h2/metadata/data/loader/H2MetaDataLoaderTest.java
@@ -162,12 +162,29 @@ class H2MetaDataLoaderTest {
         TableMetaData actualTableMetaData = 
schemaMetaDataList.iterator().next().getTables().iterator().next();
         assertThat(actualTableMetaData.getColumns().size(), is(2));
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, false, false, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, false, false, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
         assertThat(actualTableMetaData.getIndexes().size(), is(1));
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData indexMetaData = new IndexMetaData("id");
         indexMetaData.setUnique(true);
-        assertThat(indexesIterator.next(), is(indexMetaData));
+        assertIndexMetaData(indexesIterator.next(), indexMetaData);
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/data/loader/MySQLMetaDataLoaderTest.java
 
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/data/loader/MySQLMetaDataLoaderTest.java
index 562e8675721..ff796177d82 100644
--- 
a/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/data/loader/MySQLMetaDataLoaderTest.java
+++ 
b/infra/database/type/mysql/src/test/java/org/apache/shardingsphere/infra/database/mysql/metadata/data/loader/MySQLMetaDataLoaderTest.java
@@ -121,19 +121,36 @@ class MySQLMetaDataLoaderTest {
         TableMetaData actualTableMetaData = 
schemaMetaDataList.iterator().next().getTables().iterator().next();
         assertThat(actualTableMetaData.getColumns().size(), is(9));
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("doc", 
Types.LONGVARCHAR, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("geo", 
Types.BINARY, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("t_year", 
Types.DATE, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("pg", 
Types.BINARY, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("mpg", 
Types.BINARY, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("pt", 
Types.BINARY, false, false, false, true, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("mpt", 
Types.BINARY, false, false, false, true, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("doc", 
Types.LONGVARCHAR, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("geo", 
Types.BINARY, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("t_year", Types.DATE, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("pg", 
Types.BINARY, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("mpg", 
Types.BINARY, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("pt", 
Types.BINARY, false, false, false, true, false, true));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("mpt", 
Types.BINARY, false, false, false, true, false, true));
         assertThat(actualTableMetaData.getIndexes().size(), is(1));
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData expected = new IndexMetaData("id", 
Collections.singletonList("id"));
         expected.setUnique(true);
-        assertThat(indexesIterator.next(), is(expected));
+        assertIndexMetaData(indexesIterator.next(), expected);
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/data/loader/OpenGaussMetaDataLoaderTest.java
 
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/data/loader/OpenGaussMetaDataLoaderTest.java
index a5f07aef4cb..94d44c61620 100644
--- 
a/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/data/loader/OpenGaussMetaDataLoaderTest.java
+++ 
b/infra/database/type/opengauss/src/test/java/org/apache/shardingsphere/infra/database/opengauss/metadata/data/loader/OpenGaussMetaDataLoaderTest.java
@@ -176,12 +176,29 @@ class OpenGaussMetaDataLoaderTest {
         TableMetaData actualTableMetaData = 
schemaMetaDataList.iterator().next().getTables().iterator().next();
         assertThat(actualTableMetaData.getColumns().size(), is(2));
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, true, true, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, true, true, false, true));
         assertThat(actualTableMetaData.getIndexes().size(), is(1));
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData indexMetaData = new IndexMetaData("id", 
Collections.singletonList("id"));
         indexMetaData.setUnique(true);
-        assertThat(indexesIterator.next(), is(indexMetaData));
+        assertIndexMetaData(indexesIterator.next(), indexMetaData);
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
index 3a2304eb097..64c2a430c74 100644
--- 
a/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
+++ 
b/infra/database/type/oracle/src/test/java/org/apache/shardingsphere/infra/database/oracle/metadata/data/loader/OracleMetaDataLoaderTest.java
@@ -95,8 +95,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -116,8 +116,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, false, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, false, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -137,8 +137,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, false, false, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, false, false, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -159,8 +159,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -181,8 +181,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, false, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, false, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -203,8 +203,8 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, false, false, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, false, false, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -225,9 +225,9 @@ class OracleMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("address", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("address", Types.VARCHAR, false, false, false, false, false, 
true));
     }
     
     private DataSource mockDataSource() throws SQLException {
@@ -302,6 +302,23 @@ class OracleMetaDataLoaderTest {
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData indexMetaData = new IndexMetaData("id");
         indexMetaData.setUnique(true);
-        assertThat(indexesIterator.next(), is(indexMetaData));
+        assertIndexMetaData(indexesIterator.next(), indexMetaData);
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/data/loader/PostgreSQLMetaDataLoaderTest.java
 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/data/loader/PostgreSQLMetaDataLoaderTest.java
index d758126e141..6f9ae19805f 100644
--- 
a/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/data/loader/PostgreSQLMetaDataLoaderTest.java
+++ 
b/infra/database/type/postgresql/src/test/java/org/apache/shardingsphere/infra/database/postgresql/metadata/data/loader/PostgreSQLMetaDataLoaderTest.java
@@ -210,15 +210,37 @@ class PostgreSQLMetaDataLoaderTest {
         TableMetaData actualTableMetaData = 
schemaMetaDataList.iterator().next().getTables().iterator().next();
         assertThat(actualTableMetaData.getColumns().size(), is(2));
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, true, true, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, true, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, true, true, false, true));
         assertThat(actualTableMetaData.getIndexes().size(), is(1));
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData indexMetaData = new IndexMetaData("id", 
Collections.singletonList("id"));
         indexMetaData.setUnique(true);
-        assertThat(indexesIterator.next(), is(indexMetaData));
+        assertIndexMetaData(indexesIterator.next(), indexMetaData);
         assertThat(actualTableMetaData.getConstraints().size(), is(1));
         Iterator<ConstraintMetaData> constrainsMetaDataList = 
actualTableMetaData.getConstraints().iterator();
-        assertThat(constrainsMetaDataList.next(), is(new 
ConstraintMetaData("tbl_con", "refer_tbl")));
+        assertConstraintMetaData(constrainsMetaDataList.next(), new 
ConstraintMetaData("tbl_con", "refer_tbl"));
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
+    }
+    
+    private void assertConstraintMetaData(final ConstraintMetaData actual, 
final ConstraintMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getReferencedTableName(), 
is(expected.getReferencedTableName()));
     }
 }
diff --git 
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/data/loader/SQLServerMetaDataLoaderTest.java
 
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/data/loader/SQLServerMetaDataLoaderTest.java
index 2804120e1aa..87babd6e0f1 100644
--- 
a/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/data/loader/SQLServerMetaDataLoaderTest.java
+++ 
b/infra/database/type/sqlserver/src/test/java/org/apache/shardingsphere/infra/database/sqlserver/metadata/data/loader/SQLServerMetaDataLoaderTest.java
@@ -96,8 +96,8 @@ class SQLServerMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -116,8 +116,8 @@ class SQLServerMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, true, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, true, false, true));
     }
     
     @Test
@@ -135,8 +135,8 @@ class SQLServerMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, false, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, false, false, true));
     }
     
     @Test
@@ -154,8 +154,8 @@ class SQLServerMetaDataLoaderTest {
         assertTableMetaDataMap(actual);
         TableMetaData actualTableMetaData = 
actual.iterator().next().getTables().iterator().next();
         Iterator<ColumnMetaData> columnsIterator = 
actualTableMetaData.getColumns().iterator();
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false)));
-        assertThat(columnsIterator.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, true, false, true)));
+        assertColumnMetaData(columnsIterator.next(), new ColumnMetaData("id", 
Types.INTEGER, false, true, true, true, false, false));
+        assertColumnMetaData(columnsIterator.next(), new 
ColumnMetaData("name", Types.VARCHAR, false, false, false, true, false, true));
     }
     
     private DataSource mockDataSource() throws SQLException {
@@ -211,6 +211,23 @@ class SQLServerMetaDataLoaderTest {
         Iterator<IndexMetaData> indexesIterator = 
actualTableMetaData.getIndexes().iterator();
         IndexMetaData expected = new IndexMetaData("id", 
Collections.singletonList("id"));
         expected.setUnique(true);
-        assertThat(indexesIterator.next(), is(expected));
+        assertIndexMetaData(indexesIterator.next(), expected);
+    }
+    
+    private void assertColumnMetaData(final ColumnMetaData actual, final 
ColumnMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertIndexMetaData(final IndexMetaData actual, final 
IndexMetaData expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
     }
 }
diff --git 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
index 4c3ca24865b..12799278e0c 100644
--- 
a/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
+++ 
b/kernel/single/core/src/test/java/org/apache/shardingsphere/single/metadata/SingleMetaDataReviseEngineTest.java
@@ -22,6 +22,10 @@ import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.IndexMe
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.SchemaMetaData;
 import 
org.apache.shardingsphere.infra.database.core.metadata.data.model.TableMetaData;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.builder.GenericSchemaBuilderMaterial;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereColumn;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereIndex;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
+import 
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereTable;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.reviser.MetaDataReviseEngine;
 import org.apache.shardingsphere.single.rule.SingleRule;
 import org.junit.jupiter.api.Test;
@@ -35,6 +39,7 @@ import java.util.Map;
 
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 
 class SingleMetaDataReviseEngineTest {
@@ -44,16 +49,19 @@ class SingleMetaDataReviseEngineTest {
     @Test
     void assertRevise() {
         Map<String, SchemaMetaData> schemaMetaDataMap = 
Collections.singletonMap("sharding_db", new SchemaMetaData("sharding_db", 
Collections.singleton(createTableMetaData())));
-        TableMetaData tableMetaData = new 
MetaDataReviseEngine(Collections.singleton(mock(SingleRule.class))).revise(
-                schemaMetaDataMap, 
mock(GenericSchemaBuilderMaterial.class)).get("sharding_db").getTables().iterator().next();
-        Iterator<ColumnMetaData> columns = 
tableMetaData.getColumns().iterator();
-        assertThat(columns.next(), is(new ColumnMetaData("id", Types.INTEGER, 
true, false, false, true, false, true)));
-        assertThat(columns.next(), is(new ColumnMetaData("name", 
Types.VARCHAR, false, false, false, true, false, false)));
-        assertThat(columns.next(), is(new ColumnMetaData("doc", 
Types.LONGVARCHAR, false, false, false, true, false, false)));
-        assertThat(tableMetaData.getIndexes().size(), is(2));
-        Iterator<IndexMetaData> indexes = 
tableMetaData.getIndexes().iterator();
-        assertThat(indexes.next(), is(new IndexMetaData("id")));
-        assertThat(indexes.next(), is(new IndexMetaData("idx_name")));
+        Map<String, ShardingSphereSchema> actual = new 
MetaDataReviseEngine(Collections.singleton(mock(SingleRule.class))).revise(schemaMetaDataMap,
 mock(GenericSchemaBuilderMaterial.class));
+        assertThat(actual.size(), is(1));
+        assertTrue(actual.containsKey("sharding_db"));
+        assertThat(actual.get("sharding_db").getAllTables().size(), is(1));
+        ShardingSphereTable table = 
actual.get("sharding_db").getAllTables().iterator().next();
+        Iterator<ShardingSphereColumn> columns = 
table.getAllColumns().iterator();
+        assertShardingSphereColumn(columns.next(), new 
ShardingSphereColumn("id", Types.INTEGER, true, false, false, true, false, 
true));
+        assertShardingSphereColumn(columns.next(), new 
ShardingSphereColumn("name", Types.VARCHAR, false, false, false, true, false, 
false));
+        assertShardingSphereColumn(columns.next(), new 
ShardingSphereColumn("doc", Types.LONGVARCHAR, false, false, false, true, 
false, false));
+        assertThat(table.getAllIndexes().size(), is(2));
+        Iterator<ShardingSphereIndex> indexes = 
table.getAllIndexes().iterator();
+        assertShardingSphereIndex(indexes.next(), new 
ShardingSphereIndex("id", Collections.emptyList(), false));
+        assertShardingSphereIndex(indexes.next(), new 
ShardingSphereIndex("idx_name", Collections.emptyList(), false));
     }
     
     private TableMetaData createTableMetaData() {
@@ -63,4 +71,21 @@ class SingleMetaDataReviseEngineTest {
         Collection<IndexMetaData> indexMetaDataList = Arrays.asList(new 
IndexMetaData("id"), new IndexMetaData("idx_name"));
         return new TableMetaData(TABLE_NAME, columns, indexMetaDataList, 
Collections.emptyList());
     }
+    
+    private void assertShardingSphereColumn(final ShardingSphereColumn actual, 
final ShardingSphereColumn expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getDataType(), is(expected.getDataType()));
+        assertThat(actual.isPrimaryKey(), is(expected.isPrimaryKey()));
+        assertThat(actual.isGenerated(), is(expected.isGenerated()));
+        assertThat(actual.isCaseSensitive(), is(expected.isCaseSensitive()));
+        assertThat(actual.isVisible(), is(expected.isVisible()));
+        assertThat(actual.isUnsigned(), is(expected.isUnsigned()));
+        assertThat(actual.isNullable(), is(expected.isNullable()));
+    }
+    
+    private void assertShardingSphereIndex(final ShardingSphereIndex actual, 
final ShardingSphereIndex expected) {
+        assertThat(actual.getName(), is(expected.getName()));
+        assertThat(actual.getColumns(), is(expected.getColumns()));
+        assertThat(actual.isUnique(), is(expected.isUnique()));
+    }
 }

Reply via email to