You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/06/24 07:40:11 UTC
[shardingsphere] branch master updated: Improve the initialization
of OptimizeContextFactory for issue#10678 (#10840)
This is an automated email from the ASF dual-hosted git repository.
panjuan 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 b72ab32 Improve the initialization of OptimizeContextFactory for issue#10678 (#10840)
b72ab32 is described below
commit b72ab3242674b4b64e61a3d4e1dd5c603c5bfcaa
Author: totalo <48...@qq.com>
AuthorDate: Thu Jun 24 15:39:40 2021 +0800
Improve the initialization of OptimizeContextFactory for issue#10678 (#10840)
* fixed 10678
* fixed code
* fixed 10678
* test
* fixed 10678
* update test case
* update test case
* update test case
* fix method error
* checkstyle
* fix ci and checkstyle
* checkstyle
* fix ci error
* fix load table
* Update StandardMetaDataContexts.java
* Update dql-integration-test-cases.xml
* Update FederateTableMetadata.java
* Update OptimizeContextFactory.java
* Update SchemaBuilder.java
* Update FederateSchemaMetadatas.java
---
.../metadata/schema/ShardingSphereSchema.java | 2 +
.../metadata/schema/builder/SchemaBuilder.java | 75 ++++++++++++++--------
.../schema/builder/TableMetaDataBuilder.java | 11 +++-
.../rule/builder/ShardingSphereRulesBuilder.java | 11 ++--
.../metadata/schema/builder/SchemaBuilderTest.java | 36 ++++++-----
.../context/metadata/MetaDataContextsBuilder.java | 38 ++++++-----
.../metadata/impl/StandardMetaDataContexts.java | 15 +++++
.../impl/StandardMetaDataContextsTest.java | 8 +++
.../core/metadata/FederateSchemaMetadata.java | 56 ----------------
.../core/metadata/FederateSchemaMetadatas.java | 8 +--
.../core/metadata/FederateTableMetadata.java | 39 +----------
.../proxy/backend/context/ProxyContextTest.java | 5 ++
.../mysql/executor/ShowDatabasesExecutorTest.java | 3 -
.../mysql/executor/UseDatabaseExecutorTest.java | 2 -
.../hint/ShardingCTLHintBackendHandlerTest.java | 1 -
.../sctl/set/ShardingCTLSetBackendHandlerTest.java | 3 +
.../frontend/mysql/MySQLFrontendEngineTest.java | 1 -
.../MySQLAuthenticationEngineTest.java | 5 ++
.../MySQLAuthenticationHandlerTest.java | 4 ++
.../PostgreSQLAuthenticationHandlerTest.java | 4 ++
20 files changed, 154 insertions(+), 173 deletions(-)
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/ShardingSphereSchema.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/ShardingSphereSchema.java
index 3f31262..71fcca1 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/ShardingSphereSchema.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/ShardingSphereSchema.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.infra.metadata.schema;
+import lombok.Getter;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import java.util.ArrayList;
@@ -30,6 +31,7 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* ShardingSphere schema.
*/
+@Getter
public final class ShardingSphereSchema {
private final Map<String, TableMetaData> tables;
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
index 41d218c..d5453b5 100644
--- 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
@@ -22,7 +22,6 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.shardingsphere.infra.database.type.DatabaseType;
import org.apache.shardingsphere.infra.exception.ShardingSphereException;
-import org.apache.shardingsphere.infra.metadata.schema.ShardingSphereSchema;
import org.apache.shardingsphere.infra.metadata.schema.builder.loader.ColumnMetaDataLoader;
import org.apache.shardingsphere.infra.metadata.schema.builder.loader.SchemaMetaDataLoader;
import org.apache.shardingsphere.infra.metadata.schema.builder.loader.adapter.MetaDataLoaderConnectionAdapter;
@@ -37,19 +36,20 @@ import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.HashMap;
import java.util.Optional;
-import java.util.concurrent.ExecutionException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
+import java.util.concurrent.Future;
+import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
/**
@@ -66,38 +66,57 @@ public final class SchemaBuilder {
}
/**
- * Build ShardingSphere schema.
- *
+ * build actual and logic table meta data.
+ *
* @param materials schema builder materials
- * @return ShardingSphere schema
+ * @return actual and logic table meta data
* @throws SQLException SQL exception
*/
- public static ShardingSphereSchema build(final SchemaBuilderMaterials materials) throws SQLException {
- ShardingSphereSchema result = new ShardingSphereSchema();
- addRuleConfiguredTables(materials, result);
- appendRemainTables(materials, result);
+ public static Map<Map<String, TableMetaData>, Map<String, TableMetaData>> build(final SchemaBuilderMaterials materials) throws SQLException {
+ Map<Map<String, TableMetaData>, Map<String, TableMetaData>> result = new HashMap<>();
+ Map<String, TableMetaData> actualTableMetaMap = appendRemainTables(materials);
+ Map<String, TableMetaData> logicTableMetaMap = addRuleConfiguredTables(materials, actualTableMetaMap);
+ result.put(actualTableMetaMap, logicTableMetaMap);
return result;
}
- private static void addRuleConfiguredTables(final SchemaBuilderMaterials materials, final ShardingSphereSchema schema) throws SQLException {
+ private static Map<String, TableMetaData> appendRemainTables(final SchemaBuilderMaterials materials) throws SQLException {
+ Map<String, TableMetaData> result = new HashMap<>();
+ appendRemainTables(materials, result);
for (ShardingSphereRule rule : materials.getRules()) {
if (rule instanceof TableContainedRule) {
for (String table : ((TableContainedRule) rule).getTables()) {
- if (!schema.containsTable(table)) {
- TableMetaDataBuilder.build(table, materials).ifPresent(optional -> schema.put(table, optional));
+ if (!result.containsKey(table)) {
+ TableMetaDataBuilder.load(table, materials).map(optional -> result.put(table, optional));
}
}
}
}
+ return result;
}
- private static void appendRemainTables(final SchemaBuilderMaterials materials, final ShardingSphereSchema schema) throws SQLException {
+ private static void appendRemainTables(final SchemaBuilderMaterials materials, final Map<String, TableMetaData> tables) throws SQLException {
Optional<DialectTableMetaDataLoader> dialectLoader = findDialectTableMetaDataLoader(materials);
if (dialectLoader.isPresent()) {
- appendDialectRemainTables(dialectLoader.get(), materials, schema);
+ appendDialectRemainTables(dialectLoader.get(), materials, tables);
return;
}
- appendDefaultRemainTables(materials, schema);
+ appendDefaultRemainTables(materials, tables);
+ }
+
+ private static Map<String, TableMetaData> addRuleConfiguredTables(final SchemaBuilderMaterials materials, final Map<String, TableMetaData> tables) throws SQLException {
+ Map<String, TableMetaData> result = new HashMap<>(materials.getRules().size(), 1);
+ for (ShardingSphereRule rule : materials.getRules()) {
+ if (rule instanceof TableContainedRule) {
+ for (String table : ((TableContainedRule) rule).getTables()) {
+ if (tables.containsKey(table)) {
+ TableMetaData metaData = TableMetaDataBuilder.decorate(table, tables.get(table), materials.getRules());
+ result.put(table, metaData);
+ }
+ }
+ }
+ }
+ return result;
}
private static Optional<DialectTableMetaDataLoader> findDialectTableMetaDataLoader(final SchemaBuilderMaterials materials) {
@@ -109,15 +128,15 @@ public final class SchemaBuilder {
return Optional.empty();
}
- private static void appendDialectRemainTables(final DialectTableMetaDataLoader dialectLoader, final SchemaBuilderMaterials materials, final ShardingSphereSchema schema) throws SQLException {
+ private static void appendDialectRemainTables(final DialectTableMetaDataLoader dialectLoader, final SchemaBuilderMaterials materials, final Map<String, TableMetaData> tables) throws SQLException {
Collection<Future<Map<String, TableMetaData>>> futures = new LinkedList<>();
- Collection<String> existedTables = getExistedTables(materials.getRules(), schema);
+ Collection<String> existedTables = getExistedTables(materials.getRules(), tables);
for (DataSource each : materials.getDataSourceMap().values()) {
futures.add(EXECUTOR_SERVICE.submit(() -> dialectLoader.load(each, existedTables)));
}
for (Future<Map<String, TableMetaData>> each : futures) {
try {
- schema.putAll(each.get());
+ tables.putAll(each.get());
} catch (final InterruptedException | ExecutionException ex) {
if (ex.getCause() instanceof SQLException) {
throw (SQLException) ex.getCause();
@@ -127,13 +146,13 @@ public final class SchemaBuilder {
}
}
- private static void appendDefaultRemainTables(final SchemaBuilderMaterials materials, final ShardingSphereSchema schema) throws SQLException {
- Collection<String> existedTableNames = getExistedTables(materials.getRules(), schema);
+ private static void appendDefaultRemainTables(final SchemaBuilderMaterials materials, final Map<String, TableMetaData> tables) throws SQLException {
+ Collection<String> existedTableNames = getExistedTables(materials.getRules(), tables);
for (Entry<String, DataSource> entry : materials.getDataSourceMap().entrySet()) {
Collection<String> tableNames = SchemaMetaDataLoader.loadAllTableNames(entry.getValue(), materials.getDatabaseType());
tableNames.removeAll(existedTableNames);
for (String each : tableNames) {
- schema.put(each, loadTableMetaData(each, entry.getValue(), materials.getDatabaseType()));
+ tables.put(each, loadTableMetaData(each, entry.getValue(), materials.getDatabaseType()));
}
}
}
@@ -150,14 +169,14 @@ public final class SchemaBuilder {
return ColumnMetaDataLoader.load(connection, tableName, databaseType).stream().collect(Collectors.toMap(ColumnMetaData::getName, each -> each, (a, b) -> b, LinkedHashMap::new));
}
- private static Collection<String> getExistedTables(final Collection<ShardingSphereRule> rules, final ShardingSphereSchema schema) {
+ private static Collection<String> getExistedTables(final Collection<ShardingSphereRule> rules, final Map<String, TableMetaData> tables) {
Collection<String> result = new LinkedHashSet<>();
for (ShardingSphereRule each : rules) {
if (each instanceof DataNodeContainedRule) {
result.addAll(((DataNodeContainedRule) each).getAllActualTables());
}
}
- result.addAll(schema.getAllTableNames());
+ result.addAll(tables.keySet());
return result;
}
}
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 b3062fb..1cdbdf8 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
@@ -78,9 +78,16 @@ public final class TableMetaDataBuilder {
}
return Optional.empty();
}
-
+
+ /**
+ * Load logic table metadata.
+ * @param tableName table name
+ * @param tableMetaData table meta data
+ * @param rules shardingSphere rules
+ * @return table meta data
+ */
@SuppressWarnings({"unchecked", "rawtypes"})
- private static TableMetaData decorate(final String tableName, final TableMetaData tableMetaData, final Collection<ShardingSphereRule> rules) {
+ public static TableMetaData decorate(final String tableName, final TableMetaData tableMetaData, final Collection<ShardingSphereRule> rules) {
TableMetaData result = null;
for (Entry<ShardingSphereRule, RuleBasedTableMetaDataBuilder> entry : OrderedSPIRegistry.getRegisteredServices(rules, RuleBasedTableMetaDataBuilder.class).entrySet()) {
if (entry.getKey() instanceof TableContainedRule) {
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
index b5a208a..8049320 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/rule/builder/ShardingSphereRulesBuilder.java
@@ -32,6 +32,7 @@ import org.apache.shardingsphere.infra.spi.ordered.OrderedSPIRegistry;
import javax.sql.DataSource;
import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
@@ -94,7 +95,7 @@ public final class ShardingSphereRulesBuilder {
public static Collection<ShardingSphereRule> buildGlobalRules(final Collection<RuleConfiguration> globalRuleConfigurations,
final Map<String, ShardingSphereMetaData> mataDataMap) {
Map<RuleConfiguration, GlobalRuleBuilder> builders = OrderedSPIRegistry.getRegisteredServices(globalRuleConfigurations, GlobalRuleBuilder.class);
- appendDefaultKernelGlobalRuleConfigurationBuilder(builders);
+ builders = appendDefaultKernelGlobalRuleConfigurationBuilder(builders);
Collection<ShardingSphereRule> result = new LinkedList<>();
for (Entry<RuleConfiguration, GlobalRuleBuilder> entry : builders.entrySet()) {
result.add(entry.getValue().build(entry.getKey(), mataDataMap));
@@ -103,13 +104,15 @@ public final class ShardingSphereRulesBuilder {
}
@SuppressWarnings("rawtypes")
- private static void appendDefaultKernelGlobalRuleConfigurationBuilder(final Map<RuleConfiguration, GlobalRuleBuilder> builders) {
+ private static Map<RuleConfiguration, GlobalRuleBuilder> appendDefaultKernelGlobalRuleConfigurationBuilder(final Map<RuleConfiguration, GlobalRuleBuilder> builders) {
Map<GlobalRuleBuilder, DefaultKernelRuleConfigurationBuilder> defaultBuilders =
OrderedSPIRegistry.getRegisteredServices(getMissedKernelGlobalRuleBuilders(builders.values()), DefaultKernelRuleConfigurationBuilder.class);
- // TODO consider about order for new put items
+ Map<RuleConfiguration, GlobalRuleBuilder> result = new HashMap<>(builders.size() + defaultBuilders.size(), 1);
+ result.putAll(builders);
for (Entry<GlobalRuleBuilder, DefaultKernelRuleConfigurationBuilder> entry : defaultBuilders.entrySet()) {
- builders.put(entry.getValue().build(), entry.getKey());
+ result.put(entry.getValue().build(), entry.getKey());
}
+ return result;
}
@SuppressWarnings({"unchecked", "rawtypes"})
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 296dc6e..ecaec93 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
@@ -20,9 +20,9 @@ package org.apache.shardingsphere.infra.metadata.schema.builder;
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.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.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -37,6 +37,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Map;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
@@ -79,16 +80,19 @@ public final class SchemaBuilderTest {
@Test
public void assertBuildOfAllShardingTables() throws SQLException {
- ShardingSphereSchema actual = SchemaBuilder.build(schemaBuilderMaterials);
- assertThat(actual.getAllTableNames().size(), is(2));
- assertSchemaOfShardingTables(actual);
+ Map<Map<String, TableMetaData>, Map<String, TableMetaData>> actual = SchemaBuilder.build(schemaBuilderMaterials);
+ Map<String, TableMetaData> actualTables = actual.keySet().iterator().next();
+ Map<String, TableMetaData> logicTables = actual.values().iterator().next();
+ assertThat(actualTables.size(), is(2));
+ assertThat(logicTables.size(), is(2));
+ assertSchemaOfShardingTables(actualTables);
}
- private void assertSchemaOfShardingTables(final ShardingSphereSchema actual) {
- assertTrue(actual.containsTable("data_node_routed_table1"));
- assertTrue(actual.get("data_node_routed_table1").getColumns().containsKey("id"));
- assertTrue(actual.containsTable("data_node_routed_table2"));
- assertTrue(actual.get("data_node_routed_table2").getColumns().containsKey("id"));
+ private void assertSchemaOfShardingTables(final Map<String, TableMetaData> actual) {
+ assertTrue(actual.containsKey("data_node_routed_table1"));
+ assertThat(actual.get("data_node_routed_table1").getColumns().size(), is(0));
+ assertTrue(actual.containsKey("data_node_routed_table2"));
+ assertThat(actual.get("data_node_routed_table2").getColumns().size(), is(0));
}
@Test
@@ -106,16 +110,16 @@ public final class SchemaBuilderTest {
when(resultSet.next()).thenReturn(true, true, true, true, true, true, false);
String[] mockReturnTables = {singleTableNames[1], "data_node_routed_table1_0", "data_node_routed_table1_1", "data_node_routed_table2_0", "data_node_routed_table2_1"};
when(resultSet.getString(TABLE_NAME)).thenReturn(singleTableNames[0], mockReturnTables);
- ShardingSphereSchema actual = SchemaBuilder.build(schemaBuilderMaterials);
- assertThat(actual.getAllTableNames().size(), is(4));
- assertSchemaOfShardingTablesAndSingleTables(actual);
+ Map<Map<String, TableMetaData>, Map<String, TableMetaData>> actual = SchemaBuilder.build(schemaBuilderMaterials);
+ Map<String, TableMetaData> actualTables = actual.keySet().iterator().next();
+ assertThat(actualTables.size(), is(4));
+ assertActualOfShardingTablesAndSingleTables(actualTables);
}
- private void assertSchemaOfShardingTablesAndSingleTables(final ShardingSphereSchema actual) {
- assertSchemaOfShardingTables(actual);
- assertTrue(actual.containsTable(singleTableNames[0]));
+ private void assertActualOfShardingTablesAndSingleTables(final Map<String, TableMetaData> actual) {
+ assertTrue(actual.containsKey(singleTableNames[0]));
assertThat(actual.get(singleTableNames[0]).getColumns().size(), is(0));
- assertTrue(actual.containsTable(singleTableNames[1]));
+ assertTrue(actual.containsKey(singleTableNames[1]));
assertThat(actual.get(singleTableNames[1]).getColumns().size(), is(0));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
index e623057..8c0d8c5 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/MetaDataContextsBuilder.java
@@ -33,6 +33,8 @@ 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.model.TableMetaData;
+import org.apache.shardingsphere.infra.optimize.context.OptimizeContextFactory;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.builder.ShardingSphereRulesBuilder;
@@ -85,20 +87,29 @@ public final class MetaDataContextsBuilder {
* @return meta data contexts
*/
public StandardMetaDataContexts build() throws SQLException {
- Map<String, ShardingSphereMetaData> mataDataMap = new HashMap<>(schemaRuleConfigs.size(), 1);
+ Map<String, ShardingSphereMetaData> metaDataMap = new HashMap<>(schemaRuleConfigs.size(), 1);
+ Map<String, ShardingSphereMetaData> actualMetaDataMap = new HashMap<>(schemaRuleConfigs.size(), 1);
for (String each : schemaRuleConfigs.keySet()) {
- mataDataMap.put(each, buildMetaData(each));
+ Map<String, DataSource> dataSourceMap = dataSources.get(each);
+ Collection<RuleConfiguration> ruleConfigs = schemaRuleConfigs.get(each);
+ DatabaseType databaseType = DatabaseTypeRecognizer.getDatabaseType(dataSourceMap.values());
+ Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.buildSchemaRules(each, ruleConfigs, databaseType, dataSourceMap);
+ Map<Map<String, TableMetaData>, Map<String, TableMetaData>> tableMetaDataMap = SchemaBuilder.build(new SchemaBuilderMaterials(databaseType, dataSourceMap, rules, props));
+ ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(ruleConfigs, rules);
+ ShardingSphereResource resource = buildResource(databaseType, dataSourceMap);
+ ShardingSphereSchema actualSchema = new ShardingSphereSchema(tableMetaDataMap.keySet().iterator().next());
+ actualMetaDataMap.put(each, new ShardingSphereMetaData(each, resource, ruleMetaData, actualSchema));
+ metaDataMap.put(each, new ShardingSphereMetaData(each, resource, ruleMetaData, buildSchema(tableMetaDataMap)));
}
- return new StandardMetaDataContexts(mataDataMap, buildGlobalSchemaMetaData(mataDataMap), executorEngine, props);
+ OptimizeContextFactory optimizeContextFactory = new OptimizeContextFactory(actualMetaDataMap);
+ return new StandardMetaDataContexts(metaDataMap, buildGlobalSchemaMetaData(metaDataMap), executorEngine, props, optimizeContextFactory);
}
-
- private ShardingSphereMetaData buildMetaData(final String schemaName) throws SQLException {
- Map<String, DataSource> dataSourceMap = dataSources.get(schemaName);
- Collection<RuleConfiguration> ruleConfigs = schemaRuleConfigs.get(schemaName);
- DatabaseType databaseType = DatabaseTypeRecognizer.getDatabaseType(dataSourceMap.values());
- Collection<ShardingSphereRule> rules = ShardingSphereRulesBuilder.buildSchemaRules(schemaName, ruleConfigs, databaseType, dataSourceMap);
- ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(ruleConfigs, rules);
- return new ShardingSphereMetaData(schemaName, buildResource(databaseType, dataSourceMap), ruleMetaData, buildSchema(databaseType, dataSourceMap, rules));
+
+ private ShardingSphereSchema buildSchema(final Map<Map<String, TableMetaData>, Map<String, TableMetaData>> tableMetaDataMap) {
+ Map<String, TableMetaData> tables = new HashMap<>(tableMetaDataMap.size(), 1);
+ tables.putAll(tableMetaDataMap.keySet().iterator().next());
+ tables.putAll(tableMetaDataMap.values().iterator().next());
+ return new ShardingSphereSchema(tables);
}
private ShardingSphereRuleMetaData buildGlobalSchemaMetaData(final Map<String, ShardingSphereMetaData> mataDataMap) {
@@ -131,8 +142,5 @@ public final class MetaDataContextsBuilder {
return Optional.of(new CachedDatabaseMetaData(connection.getMetaData()));
}
}
-
- private ShardingSphereSchema buildSchema(final DatabaseType databaseType, final Map<String, DataSource> dataSourceMap, final Collection<ShardingSphereRule> rules) throws SQLException {
- return SchemaBuilder.build(new SchemaBuilderMaterials(databaseType, dataSourceMap, rules, props));
- }
+
}
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContexts.java b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContexts.java
index edc3803..9f6f00c 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContexts.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContexts.java
@@ -58,6 +58,11 @@ public final class StandardMetaDataContexts implements MetaDataContexts {
new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()), null, new ConfigurationProperties(new Properties()));
}
+ /**
+ * todo remove this deprecated constructor.
+ * @deprecated old
+ */
+ @Deprecated
public StandardMetaDataContexts(final Map<String, ShardingSphereMetaData> metaDataMap, final ShardingSphereRuleMetaData globalRuleMetaData,
final ExecutorEngine executorEngine, final ConfigurationProperties props) {
this.metaDataMap = new LinkedHashMap<>(metaDataMap);
@@ -68,6 +73,16 @@ public final class StandardMetaDataContexts implements MetaDataContexts {
stateContext = new StateContext();
}
+ public StandardMetaDataContexts(final Map<String, ShardingSphereMetaData> metaDataMap, final ShardingSphereRuleMetaData globalRuleMetaData,
+ final ExecutorEngine executorEngine, final ConfigurationProperties props, final OptimizeContextFactory optimizeContextFactory) {
+ this.metaDataMap = new LinkedHashMap<>(metaDataMap);
+ this.globalRuleMetaData = globalRuleMetaData;
+ this.executorEngine = executorEngine;
+ this.optimizeContextFactory = optimizeContextFactory;
+ this.props = props;
+ stateContext = new StateContext();
+ }
+
@Override
public Collection<String> getAllSchemaNames() {
return metaDataMap.keySet();
diff --git a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContextsTest.java b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContextsTest.java
index 119df0f..e32c5a4 100644
--- a/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContextsTest.java
+++ b/shardingsphere-infra/shardingsphere-infra-context/src/test/java/org/apache/shardingsphere/infra/context/metadata/impl/StandardMetaDataContextsTest.java
@@ -24,9 +24,13 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.model.TableMetaData;
import org.junit.Test;
import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
@@ -59,8 +63,12 @@ public final class StandardMetaDataContextsTest {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
ShardingSphereRuleMetaData ruleMetaData = new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList());
ShardingSphereResource resource = new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType());
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
+ Map<String, TableMetaData> tables = new HashMap<>();
when(metaData.getRuleMetaData()).thenReturn(ruleMetaData);
when(metaData.getResource()).thenReturn(resource);
+ when(metaData.getSchema()).thenReturn(schema);
+ when(schema.getTables()).thenReturn(tables);
return metaData;
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadata.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadata.java
index cedfaf7..e208203 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadata.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadata.java
@@ -19,17 +19,9 @@ package org.apache.shardingsphere.infra.optimize.core.metadata;
import lombok.Getter;
import lombok.Synchronized;
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
-import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
-import org.apache.shardingsphere.infra.rule.type.DataNodeContainedRule;
-import org.apache.shardingsphere.infra.rule.type.DataSourceContainedRule;
-import java.sql.SQLException;
-import java.util.Collection;
import java.util.LinkedHashMap;
-import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
@@ -45,16 +37,6 @@ public final class FederateSchemaMetadata {
private final Map<String, FederateTableMetadata> tables = new LinkedHashMap<>();
- /**
- * Please fix me.
- * @deprecated Remove this constructor.
- */
- @Deprecated
- public FederateSchemaMetadata(final String name, final ShardingSphereMetaData metaData) throws SQLException {
- this.name = name;
- initTables(metaData);
- }
-
public FederateSchemaMetadata(final String name, final Map<String, TableMetaData> metaData) {
this.name = name;
for (Entry<String, TableMetaData> entry : metaData.entrySet()) {
@@ -62,44 +44,6 @@ public final class FederateSchemaMetadata {
}
}
- private void initTables(final ShardingSphereMetaData metaData) throws SQLException {
- Collection<DataNodeContainedRule> dataNodeRules = getDataNodeContainedRules(metaData);
- Map<String, Collection<DataNode>> tableDataNodes = getTableDataNodes(dataNodeRules);
- Map<String, Collection<String>> dataSourceRules = getDataSourceRules(metaData);
- for (Entry<String, Collection<DataNode>> entry : tableDataNodes.entrySet()) {
- tables.put(entry.getKey(),
- new FederateTableMetadata(entry.getKey(), metaData.getResource().getDataSources(), dataSourceRules, entry.getValue(), metaData.getResource().getDatabaseType()));
- }
- }
-
- private Collection<DataNodeContainedRule> getDataNodeContainedRules(final ShardingSphereMetaData metaData) {
- Collection<DataNodeContainedRule> result = new LinkedList<>();
- for (ShardingSphereRule each : metaData.getRuleMetaData().getRules()) {
- if (each instanceof DataNodeContainedRule) {
- result.add((DataNodeContainedRule) each);
- }
- }
- return result;
- }
-
- private Map<String, Collection<String>> getDataSourceRules(final ShardingSphereMetaData metaData) {
- Map<String, Collection<String>> result = new LinkedHashMap<>();
- for (ShardingSphereRule each : metaData.getRuleMetaData().getRules()) {
- if (each instanceof DataSourceContainedRule) {
- result.putAll(((DataSourceContainedRule) each).getDataSourceMapper());
- }
- }
- return result;
- }
-
- private Map<String, Collection<DataNode>> getTableDataNodes(final Collection<DataNodeContainedRule> dataNodeRules) {
- Map<String, Collection<DataNode>> result = new LinkedHashMap<>();
- for (DataNodeContainedRule each : dataNodeRules) {
- result.putAll(each.getAllDataNodes());
- }
- return result;
- }
-
/**
* Renew.
* @param tableName table name
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
index 878f7ad..ebce62e 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateSchemaMetadatas.java
@@ -20,10 +20,8 @@ package org.apache.shardingsphere.infra.optimize.core.metadata;
import lombok.Getter;
import org.apache.commons.collections4.map.LinkedMap;
import org.apache.shardingsphere.infra.database.DefaultSchema;
-import org.apache.shardingsphere.infra.exception.ShardingSphereException;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
-import java.sql.SQLException;
import java.util.Map;
import java.util.Map.Entry;
@@ -37,11 +35,7 @@ public final class FederateSchemaMetadatas {
public FederateSchemaMetadatas(final Map<String, ShardingSphereMetaData> metaDataMap) {
for (Entry<String, ShardingSphereMetaData> each : metaDataMap.entrySet()) {
- try {
- schemas.put(each.getKey(), new FederateSchemaMetadata(each.getKey(), each.getValue()));
- } catch (final SQLException ex) {
- throw new ShardingSphereException(ex);
- }
+ schemas.put(each.getKey(), new FederateSchemaMetadata(each.getKey(), each.getValue().getSchema().getTables()));
}
}
diff --git a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateTableMetadata.java b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateTableMetadata.java
index 229f1f6..d811c1a 100644
--- a/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateTableMetadata.java
+++ b/shardingsphere-infra/shardingsphere-infra-optimize/src/main/java/org/apache/shardingsphere/infra/optimize/core/metadata/FederateTableMetadata.java
@@ -24,19 +24,12 @@ import org.apache.calcite.rel.type.RelDataTypeSystem;
import org.apache.calcite.rel.type.RelProtoDataType;
import org.apache.calcite.sql.type.SqlTypeFactoryImpl;
import org.apache.calcite.sql.type.SqlTypeName;
-import org.apache.shardingsphere.infra.database.type.DatabaseType;
-import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.metadata.schema.builder.loader.TableMetaDataLoader;
import org.apache.shardingsphere.infra.metadata.schema.model.ColumnMetaData;
import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
-import javax.sql.DataSource;
-import java.sql.SQLException;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Map;
-import java.util.Optional;
/**
* Federate table metadata.
@@ -44,7 +37,7 @@ import java.util.Optional;
@Getter
public final class FederateTableMetadata {
- private static final RelDataTypeFactory TYPE_FACTORY = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
+ private static final RelDataTypeFactory TYPE_FACTORY = new SqlTypeFactoryImpl(RelDataTypeSystem.DEFAULT);
private final String name;
@@ -58,27 +51,6 @@ public final class FederateTableMetadata {
columnNames.addAll(tableMetaData.getColumns().keySet());
}
- /**
- * Please fix me.
- * @deprecated Remove this constructor.
- */
- @Deprecated
- public FederateTableMetadata(final String name, final Map<String, DataSource> dataSources, final Map<String, Collection<String>> dataSourceRules,
- final Collection<DataNode> tableDataNodes, final DatabaseType databaseType) throws SQLException {
- this.name = name;
- TableMetaData tableMetaData = createTableMetaData(dataSources, dataSourceRules, tableDataNodes, databaseType);
- relProtoDataType = createRelDataType(tableMetaData);
- columnNames.addAll(tableMetaData.getColumns().keySet());
- }
-
- private TableMetaData createTableMetaData(final Map<String, DataSource> dataSources, final Map<String, Collection<String>> dataSourceRules,
- final Collection<DataNode> tableDataNodes, final DatabaseType databaseType) throws SQLException {
- DataNode dataNode = tableDataNodes.iterator().next();
- Optional<TableMetaData> tableMetaData =
- TableMetaDataLoader.load(getActualDataSource(dataSources, dataSourceRules, dataNode.getDataSourceName()), dataNode.getTableName(), databaseType);
- return tableMetaData.orElseGet(TableMetaData::new);
- }
-
private RelProtoDataType createRelDataType(final TableMetaData tableMetaData) {
RelDataTypeFactory.Builder fieldInfo = TYPE_FACTORY.builder();
for (Map.Entry<String, ColumnMetaData> entry : tableMetaData.getColumns().entrySet()) {
@@ -87,13 +59,4 @@ public final class FederateTableMetadata {
}
return RelDataTypeImpl.proto(fieldInfo.build());
}
-
- private DataSource getActualDataSource(final Map<String, DataSource> dataSources,
- final Map<String, Collection<String>> dataSourceRules, final String logicDataSource) {
- String result = logicDataSource;
- if (dataSourceRules.containsKey(logicDataSource)) {
- result = dataSourceRules.get(logicDataSource).iterator().next();
- }
- return dataSources.get(result);
- }
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
index a0f8693..c8cc8e8 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/context/ProxyContextTest.java
@@ -26,6 +26,7 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.proxy.backend.exception.NoDatabaseSelectedException;
import org.apache.shardingsphere.transaction.context.TransactionContexts;
import org.junit.Test;
@@ -36,6 +37,7 @@ import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.Map;
+import java.util.HashMap;
import java.util.Properties;
import static org.hamcrest.CoreMatchers.is;
@@ -117,8 +119,11 @@ public final class ProxyContextTest {
Map<String, ShardingSphereMetaData> result = new LinkedHashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(metaData.getResource()).thenReturn(new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType()));
when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
+ when(metaData.getSchema()).thenReturn(schema);
+ when(schema.getTables()).thenReturn(new HashMap<>());
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/ShowDatabasesExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/ShowDatabasesExecutorTest.java
index fbf575e..bbc15da 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/ShowDatabasesExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/ShowDatabasesExecutorTest.java
@@ -33,7 +33,6 @@ import org.mockito.junit.MockitoJUnitRunner;
import java.lang.reflect.Field;
import java.sql.SQLException;
-import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Properties;
@@ -65,8 +64,6 @@ public final class ShowDatabasesExecutorTest {
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(metaData.getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
- when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
- result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/UseDatabaseExecutorTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/UseDatabaseExecutorTest.java
index aa2abd0..4356379 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/UseDatabaseExecutorTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/admin/mysql/executor/UseDatabaseExecutorTest.java
@@ -33,7 +33,6 @@ import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;
import java.lang.reflect.Field;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -65,7 +64,6 @@ public final class UseDatabaseExecutorTest {
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(metaData.getResource().getDatabaseType()).thenReturn(new H2DatabaseType());
- when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
index 9b342c5..45ed9de 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/hint/ShardingCTLHintBackendHandlerTest.java
@@ -202,7 +202,6 @@ public final class ShardingCTLHintBackendHandlerTest {
when(metaData.getSchema()).thenReturn(new ShardingSphereSchema(ImmutableMap.of("user", mock(TableMetaData.class))));
when(metaData.isComplete()).thenReturn(true);
when(metaData.getResource().getDatabaseType()).thenReturn(new H2DatabaseType());
- when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
return Collections.singletonMap("schema", metaData);
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
index 39e5289..7807ad5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-backend/src/test/java/org/apache/shardingsphere/proxy/backend/text/sctl/set/ShardingCTLSetBackendHandlerTest.java
@@ -24,6 +24,7 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.proxy.backend.communication.jdbc.connection.BackendConnection;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.backend.response.header.ResponseHeader;
@@ -64,8 +65,10 @@ public final class ShardingCTLSetBackendHandlerTest {
Map<String, ShardingSphereMetaData> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(metaData.getResource()).thenReturn(new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType()));
when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
+ when(metaData.getSchema()).thenReturn(schema);
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index 90d127c..a269613 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -172,7 +172,6 @@ public final class MySQLFrontendEngineTest {
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class, RETURNS_DEEP_STUBS);
when(metaData.getResource().getDatabaseType()).thenReturn(new MySQLDatabaseType());
- when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
index d090775..2e47c67 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationEngineTest.java
@@ -34,6 +34,7 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.proxy.backend.context.ProxyContext;
import org.apache.shardingsphere.proxy.frontend.authentication.AuthenticationResultBuilder;
import org.junit.Before;
@@ -43,6 +44,7 @@ import java.lang.reflect.Field;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Optional;
import java.util.Properties;
@@ -157,8 +159,11 @@ public final class MySQLAuthenticationEngineTest {
private ShardingSphereMetaData mockShardingSphereMetaData() {
ShardingSphereMetaData result = mock(ShardingSphereMetaData.class);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(result.getResource()).thenReturn(new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType()));
when(result.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
+ when(result.getSchema()).thenReturn(schema);
+ when(schema.getTables()).thenReturn(new HashMap<>());
return result;
}
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
index a9c84c8..498f56a 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/authentication/MySQLAuthenticationHandlerTest.java
@@ -35,6 +35,7 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.user.ShardingSphereUser;
import org.apache.shardingsphere.infra.spi.ShardingSphereServiceLoader;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
@@ -145,8 +146,11 @@ public final class MySQLAuthenticationHandlerTest {
Map<String, ShardingSphereMetaData> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(metaData.getResource()).thenReturn(new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType()));
when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
+ when(metaData.getSchema()).thenReturn(schema);
+ when(schema.getTables()).thenReturn(new HashMap<>());
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
index f2cc027..261a352 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/authentication/PostgreSQLAuthenticationHandlerTest.java
@@ -36,6 +36,7 @@ import org.apache.shardingsphere.infra.executor.kernel.ExecutorEngine;
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.user.ShardingSphereUser;
import org.apache.shardingsphere.proxy.backend.context.ProxyContext;
import org.junit.Before;
@@ -135,8 +136,11 @@ public final class PostgreSQLAuthenticationHandlerTest {
Map<String, ShardingSphereMetaData> result = new HashMap<>(10, 1);
for (int i = 0; i < 10; i++) {
ShardingSphereMetaData metaData = mock(ShardingSphereMetaData.class);
+ ShardingSphereSchema schema = mock(ShardingSphereSchema.class);
when(metaData.getResource()).thenReturn(new ShardingSphereResource(Collections.emptyMap(), null, null, new MySQLDatabaseType()));
when(metaData.getRuleMetaData()).thenReturn(new ShardingSphereRuleMetaData(Collections.emptyList(), Collections.emptyList()));
+ when(metaData.getSchema()).thenReturn(schema);
+ when(schema.getTables()).thenReturn(new HashMap<>());
result.put(String.format(SCHEMA_PATTERN, i), metaData);
}
return result;