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));