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 39a41cc  Remove decorate federation table meta data. (#14000)
39a41cc is described below

commit 39a41ccba03236c51d39fdabd1ec5091f86dcd46
Author: tuichenchuxin <[email protected]>
AuthorDate: Thu Dec 9 14:36:56 2021 +0800

    Remove decorate federation table meta data. (#14000)
    
    * Remove decorate federation table meta data.
    
    * resolve conflict
---
 .../metadata/schema/builder/SchemaBuilder.java     | 65 ----------------------
 .../schema/builder/TableMetaDataBuilder.java       | 52 ++++-------------
 .../metadata/schema/builder/SchemaBuilderTest.java | 12 ++--
 .../schema/builder/TableMetaDataBuilderTest.java   | 11 ----
 .../type/AlterTableStatementSchemaRefresher.java   |  4 +-
 .../type/CreateTableStatementSchemaRefresher.java  |  4 +-
 .../metadata/SingleTableSchemaBuilderTest.java     | 13 ++---
 .../mode/manager/ContextManager.java               | 11 +---
 .../mode/metadata/MetaDataContextsBuilder.java     |  5 +-
 9 files changed, 27 insertions(+), 150 deletions(-)

diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilder.java
deleted file mode 100644
index 28912b3..0000000
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilder.java
+++ /dev/null
@@ -1,65 +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.infra.metadata.schema.builder;
-
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- * Schema builder.
- */
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public final class SchemaBuilder {
-    
-    /**
-     * Build kernel schema.
-     *
-     * @param tableMetaDataList table meta data list
-     * @param rules sharding sphere rule
-     * @return ShardingSphere schema
-     */
-    public static ShardingSphereSchema buildKernelSchema(final 
Collection<TableMetaData> tableMetaDataList, final 
Collection<ShardingSphereRule> rules) {
-        return buildSchema(tableMetaDataList, each -> 
TableMetaDataBuilder.decorateKernelTableMetaData(each, rules));
-    }
-    
-    /**
-     * Build federation schema.
-     *
-     * @param tableMetaDataList table meta data list
-     * @param rules sharding sphere rule
-     * @return ShardingSphere schema
-     */
-    public static ShardingSphereSchema buildFederationSchema(final 
Collection<TableMetaData> tableMetaDataList, final 
Collection<ShardingSphereRule> rules) {
-        return buildSchema(tableMetaDataList, each -> 
TableMetaDataBuilder.decorateFederationTableMetaData(each, rules));
-    }
-    
-    private static ShardingSphereSchema buildSchema(final 
Collection<TableMetaData> tableMetaDataList, final Function<TableMetaData, 
TableMetaData> mapper) {
-        Map<String, TableMetaData> tableMetaDataMap = 
tableMetaDataList.stream().map(mapper)
-                .collect(Collectors.toMap(TableMetaData::getName, 
Function.identity(), (oldValue, currentValue) -> oldValue, LinkedHashMap::new));
-        return new ShardingSphereSchema(tableMetaDataMap);
-    }
-}
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
index afcc208..e7ba1e6 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilder.java
@@ -22,7 +22,6 @@ import lombok.NoArgsConstructor;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.spi.RuleBasedTableMetaDataBuilder;
 import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
 import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
 import org.apache.shardingsphere.spi.ShardingSphereServiceLoader;
 import org.apache.shardingsphere.spi.ordered.OrderedSPIRegistry;
@@ -32,7 +31,6 @@ import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Optional;
 import java.util.stream.Collectors;
 
 /**
@@ -55,58 +53,30 @@ public final class TableMetaDataBuilder {
      */
     @SuppressWarnings({"unchecked", "rawtypes"})
     public static Map<String, TableMetaData> load(final Collection<String> 
tableNames, final SchemaBuilderMaterials materials) throws SQLException {
-        Map<String, TableMetaData> result = new LinkedHashMap<>();
+        Map<String, TableMetaData> tableMetaDataMap = new LinkedHashMap<>();
         for (Entry<ShardingSphereRule, RuleBasedTableMetaDataBuilder> entry : 
OrderedSPIRegistry.getRegisteredServices(RuleBasedTableMetaDataBuilder.class, 
materials.getRules()).entrySet()) {
             if (entry.getKey() instanceof TableContainedRule) {
                 TableContainedRule rule = (TableContainedRule) entry.getKey();
                 RuleBasedTableMetaDataBuilder<TableContainedRule> builder = 
entry.getValue();
-                Collection<String> needLoadTables = 
tableNames.stream().filter(each -> rule.getTables().contains(each)).filter(each 
-> !result.containsKey(each)).collect(Collectors.toList());
+                Collection<String> needLoadTables = 
tableNames.stream().filter(each -> rule.getTables().contains(each))
+                        .filter(each -> 
!tableMetaDataMap.containsKey(each)).collect(Collectors.toList());
                 if (!needLoadTables.isEmpty()) {
-                    result.putAll(builder.load(needLoadTables, rule, 
materials));
+                    tableMetaDataMap.putAll(builder.load(needLoadTables, rule, 
materials));
                 }
             }
         }
-        return result;
+        return decorate(tableMetaDataMap, materials.getRules());
     }
     
-    /**
-     * Decorate federation table meta data.
-     *
-     * @param tableMetaData table meta data
-     * @param rules shardingSphere rules
-     * @return table meta data
-     */
-    public static TableMetaData decorateFederationTableMetaData(final 
TableMetaData tableMetaData, final Collection<ShardingSphereRule> rules) {
-        return decorateTableName(tableMetaData, rules);
-    }
-    
-    /**
-     * Decorate kernel table meta data.
-     *
-     * @param tableMetaData table meta data
-     * @param rules shardingSphere rules
-     * @return table meta data
-     */
     @SuppressWarnings({"unchecked", "rawtypes"})
-    public static TableMetaData decorateKernelTableMetaData(final 
TableMetaData tableMetaData, final Collection<ShardingSphereRule> rules) {
-        TableMetaData result = decorateTableName(tableMetaData, rules);
-        for (Entry<ShardingSphereRule, RuleBasedTableMetaDataBuilder> entry : 
OrderedSPIRegistry.getRegisteredServices(RuleBasedTableMetaDataBuilder.class, 
rules).entrySet()) {
-            if (entry.getKey() instanceof TableContainedRule) {
-                result = entry.getValue().decorate(result.getName(), result, 
(TableContainedRule) entry.getKey());
-            }
-        }
-        return result;
-    }
-    
-    private static TableMetaData decorateTableName(final TableMetaData 
tableMetaData, final Collection<ShardingSphereRule> rules) {
-        for (ShardingSphereRule each : rules) {
-            if (each instanceof DataNodeContainedRule) {
-                Optional<String> logicTable = ((DataNodeContainedRule) 
each).findLogicTableByActualTable(tableMetaData.getName());
-                if (logicTable.isPresent()) {
-                    return new TableMetaData(logicTable.get(), 
tableMetaData.getColumns().values(), tableMetaData.getIndexes().values());
+    private static Map<String, TableMetaData> decorate(final Map<String, 
TableMetaData> tableMetaDataMap, final Collection<ShardingSphereRule> rules) {
+        for (Entry<String, TableMetaData> entry : tableMetaDataMap.entrySet()) 
{
+            for (Entry<ShardingSphereRule, RuleBasedTableMetaDataBuilder> 
builderEntry : 
OrderedSPIRegistry.getRegisteredServices(RuleBasedTableMetaDataBuilder.class, 
rules).entrySet()) {
+                if (builderEntry.getKey() instanceof TableContainedRule) {
+                    
entry.setValue(builderEntry.getValue().decorate(entry.getKey(), 
entry.getValue(), (TableContainedRule) builderEntry.getKey()));
                 }
             }
         }
-        return new TableMetaData(tableMetaData.getName(), 
tableMetaData.getColumns().values(), tableMetaData.getIndexes().values());
+        return tableMetaDataMap;
     }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilderTest.java
index fa4993b..8b0f63b 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/SchemaBuilderTest.java
@@ -60,14 +60,10 @@ public final class SchemaBuilderTest {
         Collection<ShardingSphereRule> rules = Arrays.asList(new 
CommonFixtureRule(), new DataNodeContainedFixtureRule());
         Collection<String> tableNames = rules.stream().filter(rule -> rule 
instanceof TableContainedRule)
                 .flatMap(shardingSphereRule -> ((TableContainedRule) 
shardingSphereRule).getTables().stream()).collect(Collectors.toSet());
-        Collection<TableMetaData> tableMetaDataList = 
TableMetaDataBuilder.load(tableNames, new SchemaBuilderMaterials(
-                databaseType, Collections.singletonMap("logic_db", 
dataSource), rules, props)).values();
-        ShardingSphereSchema schemaForKernel = 
SchemaBuilder.buildKernelSchema(tableMetaDataList, rules);
-        ShardingSphereSchema schemaForFederation = 
SchemaBuilder.buildFederationSchema(tableMetaDataList, rules);
-        assertThat(schemaForKernel.getTables().keySet().size(), is(2));
-        assertSchemaOfShardingTables(schemaForKernel.getTables().values());
-        assertThat(schemaForFederation.getTables().keySet().size(), is(2));
-        assertSchemaOfShardingTables(schemaForFederation.getTables().values());
+        ShardingSphereSchema schema = new 
ShardingSphereSchema(TableMetaDataBuilder.load(tableNames, new 
SchemaBuilderMaterials(
+                databaseType, Collections.singletonMap("logic_db", 
dataSource), rules, props)));
+        assertThat(schema.getTables().keySet().size(), is(2));
+        assertSchemaOfShardingTables(schema.getTables().values());
     }
     
     private void assertSchemaOfShardingTables(final Collection<TableMetaData> 
actual) {
diff --git 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilderTest.java
 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilderTest.java
index f1ddbb9..9ee3c6a 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilderTest.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-common/src/test/java/org/apache/shardingsphere/infra/metadata/schema/builder/TableMetaDataBuilderTest.java
@@ -21,7 +21,6 @@ import 
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import 
org.apache.shardingsphere.infra.metadata.schema.fixture.rule.CommonFixtureRule;
 import 
org.apache.shardingsphere.infra.metadata.schema.fixture.rule.DataNodeContainedFixtureRule;
-import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Answers;
@@ -34,7 +33,6 @@ import java.util.Arrays;
 import java.util.Collections;
 
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
 @RunWith(MockitoJUnitRunner.class)
@@ -63,13 +61,4 @@ public final class TableMetaDataBuilderTest {
                 props)).isEmpty());
     }
     
-    @Test
-    public void assertDecorateForFederation() {
-        assertNotNull(TableMetaDataBuilder.decorateFederationTableMetaData(new 
TableMetaData(), Arrays.asList(new CommonFixtureRule(), new 
DataNodeContainedFixtureRule())));
-    }
-    
-    @Test
-    public void assertDecorateForKernel() {
-        assertNotNull(TableMetaDataBuilder.decorateKernelTableMetaData(new 
TableMetaData(), Arrays.asList(new CommonFixtureRule(), new 
DataNodeContainedFixtureRule())));
-    }
 }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterTableStatementSchemaRefresher.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterTableStatementSchemaRefresher.java
index 19ff426..5856fa5 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterTableStatementSchemaRefresher.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/AlterTableStatementSchemaRefresher.java
@@ -65,8 +65,8 @@ public final class AlterTableStatementSchemaRefresher 
implements MetaDataRefresh
                 schemaMetaData.getResource().getDatabaseType(), 
schemaMetaData.getResource().getDataSources(), 
schemaMetaData.getRuleMetaData().getRules(), props);
         Optional<TableMetaData> actualTableMetaData = 
Optional.ofNullable(TableMetaDataBuilder.load(Collections.singletonList(tableName),
 materials).get(tableName));
         actualTableMetaData.ifPresent(tableMetaData -> {
-            schemaMetaData.getSchema().put(tableName, 
TableMetaDataBuilder.decorateKernelTableMetaData(tableMetaData, 
materials.getRules()));
-            
schema.put(TableMetaDataBuilder.decorateFederationTableMetaData(tableMetaData, 
materials.getRules()));
+            schemaMetaData.getSchema().put(tableName, tableMetaData);
+            schema.put(tableMetaData);
         });
     }
     
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
index e25a319..f20a16c 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
@@ -49,8 +49,8 @@ public final class CreateTableStatementSchemaRefresher 
implements MetaDataRefres
                 schemaMetaData.getResource().getDatabaseType(), 
schemaMetaData.getResource().getDataSources(), 
schemaMetaData.getRuleMetaData().getRules(), props);
         Optional<TableMetaData> actualTableMetaData = 
Optional.ofNullable(TableMetaDataBuilder.load(Collections.singletonList(tableName),
 materials).get(tableName));
         actualTableMetaData.ifPresent(tableMetaData -> {
-            schemaMetaData.getSchema().put(tableName, 
TableMetaDataBuilder.decorateKernelTableMetaData(tableMetaData, 
materials.getRules()));
-            
schema.put(TableMetaDataBuilder.decorateFederationTableMetaData(tableMetaData, 
materials.getRules()));
+            schemaMetaData.getSchema().put(tableName, tableMetaData);
+            schema.put(tableMetaData);
         });
     }
     
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaBuilderTest.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaBuilderTest.java
index d554b5b..e0ce8f0 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaBuilderTest.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/test/java/org/apache/shardingsphere/singletable/metadata/SingleTableSchemaBuilderTest.java
@@ -21,7 +21,6 @@ import lombok.SneakyThrows;
 import 
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
 import org.apache.shardingsphere.infra.database.type.DatabaseType;
 import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilder;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.TableMetaDataBuilder;
 import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
@@ -77,14 +76,10 @@ public final class SingleTableSchemaBuilderTest {
         when(dataSource.getConnection()).thenReturn(connection);
         Collection<ShardingSphereRule> rules = 
Collections.singletonList(mockSingleTableRuleLoad(connection));
         mockSQLLoad(connection);
-        Collection<TableMetaData> tableMetaDataList = 
TableMetaDataBuilder.load(Arrays.asList(singleTableNames),
-                new SchemaBuilderMaterials(databaseType, 
Collections.singletonMap("logic_db", dataSource), rules, props)).values();
-        ShardingSphereSchema schemaForKernel = 
SchemaBuilder.buildKernelSchema(tableMetaDataList, rules);
-        ShardingSphereSchema schemaForFederation = 
SchemaBuilder.buildFederationSchema(tableMetaDataList, rules);
-        assertThat(schemaForKernel.getTables().size(), is(2));
-        assertActualOfSingleTables(schemaForKernel.getTables().values());
-        assertThat(schemaForFederation.getTables().size(), is(2));
-        assertActualOfSingleTables(schemaForFederation.getTables().values());
+        ShardingSphereSchema schema = new 
ShardingSphereSchema(TableMetaDataBuilder.load(Arrays.asList(singleTableNames),
+                new SchemaBuilderMaterials(databaseType, 
Collections.singletonMap("logic_db", dataSource), rules, props)));
+        assertThat(schema.getTables().size(), is(2));
+        assertActualOfSingleTables(schema.getTables().values());
     }
     
     @SneakyThrows(SQLException.class)
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index 7869045..7970097 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -30,7 +30,6 @@ import 
org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import 
org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilder;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilderMaterials;
 import 
org.apache.shardingsphere.infra.metadata.schema.builder.TableMetaDataBuilder;
 import org.apache.shardingsphere.infra.metadata.schema.loader.SchemaLoader;
@@ -226,15 +225,12 @@ public final class ContextManager implements 
AutoCloseable {
      * @param schema schema
      */
     public void alterSchema(final String schemaName, final 
ShardingSphereSchema schema) {
-        Collection<TableMetaData> tableMetaDataList = 
schema.getTables().values();
         ShardingSphereMetaData kernelMetaData = new 
ShardingSphereMetaData(schemaName, 
metaDataContexts.getMetaData(schemaName).getResource(),
-                metaDataContexts.getMetaData(schemaName).getRuleMetaData(), 
SchemaBuilder.buildKernelSchema(tableMetaDataList,
-                
metaDataContexts.getMetaData(schemaName).getRuleMetaData().getRules()));
+                metaDataContexts.getMetaData(schemaName).getRuleMetaData(), 
schema);
         Map<String, ShardingSphereMetaData> kernelMetaDataMap = new 
HashMap<>(metaDataContexts.getMetaDataMap());
         kernelMetaDataMap.put(schemaName, kernelMetaData);
         
metaDataContexts.getOptimizerContext().getFederationMetaData().getSchemas().put(schemaName,
-                new FederationSchemaMetaData(schemaName, 
SchemaBuilder.buildKernelSchema(tableMetaDataList,
-                        
metaDataContexts.getMetaData(schemaName).getRuleMetaData().getRules()).getTables()));
+                new FederationSchemaMetaData(schemaName, schema.getTables()));
         renewMetaDataContexts(rebuildMetaDataContexts(kernelMetaDataMap));
     }
     
@@ -328,8 +324,7 @@ public final class ContextManager implements AutoCloseable {
     }
     
     private void loadTableMetaData(final String schemaName, final String 
tableName, final SchemaBuilderMaterials materials) throws SQLException {
-        TableMetaData tableMetaData = 
Optional.ofNullable(TableMetaDataBuilder.load(Collections.singletonList(tableName),
 materials).get(tableName))
-                .map(each -> 
TableMetaDataBuilder.decorateKernelTableMetaData(each, 
materials.getRules())).orElseGet(TableMetaData::new);
+        TableMetaData tableMetaData = 
TableMetaDataBuilder.load(Collections.singletonList(tableName), 
materials).getOrDefault(tableName, new TableMetaData());
         if (!tableMetaData.getColumns().isEmpty()) {
             
metaDataContexts.getMetaData(schemaName).getSchema().put(tableName, 
tableMetaData);
             metaDataContexts.getMetaDataPersistService().ifPresent(optional -> 
optional.getSchemaMetaDataService().persist(schemaName, 
metaDataContexts.getMetaData(schemaName).getSchema()));
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
index b07ab05..332e388 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/metadata/MetaDataContextsBuilder.java
@@ -31,8 +31,6 @@ import 
org.apache.shardingsphere.infra.metadata.resource.DataSourcesMetaData;
 import 
org.apache.shardingsphere.infra.metadata.resource.ShardingSphereResource;
 import 
org.apache.shardingsphere.infra.metadata.rule.ShardingSphereRuleMetaData;
 import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
-import org.apache.shardingsphere.infra.metadata.schema.builder.SchemaBuilder;
-import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
 import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
 import org.apache.shardingsphere.infra.rule.builder.global.GlobalRulesBuilder;
 import org.apache.shardingsphere.mode.metadata.persist.MetaDataPersistService;
@@ -95,8 +93,7 @@ public final class MetaDataContextsBuilder {
             DatabaseType databaseType = 
DatabaseTypeRecognizer.getDatabaseType(dataSourceMap.values());
             ShardingSphereRuleMetaData ruleMetaData = new 
ShardingSphereRuleMetaData(ruleConfigs, rules.get(each));
             ShardingSphereResource resource = buildResource(databaseType, 
dataSourceMap);
-            Collection<TableMetaData> tableMetaDataList = 
schemas.get(each).getTables().values();
-            metaData.put(each, new ShardingSphereMetaData(each, resource, 
ruleMetaData, SchemaBuilder.buildKernelSchema(tableMetaDataList, 
rules.get(each))));
+            metaData.put(each, new ShardingSphereMetaData(each, resource, 
ruleMetaData, schemas.get(each)));
         }
         ShardingSphereRuleMetaData globalMetaData = 
buildGlobalSchemaMetaData(metaData);
         return new MetaDataContexts(metaDataPersistService, metaData, 
globalMetaData, executorEngine, props, OptimizerContextFactory.create(metaData, 
globalMetaData));

Reply via email to