diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java index 7ba33ba3bba78..92d550c163a7f 100644 --- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java +++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/datanode/SingleTableDataNodeLoader.java @@ -39,6 +39,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; +import java.util.stream.Collectors; /** * Single table data node loader. @@ -63,11 +64,14 @@ public static Map> load(final String databaseName, return new LinkedHashMap<>(); } Collection excludedTables = SingleTableLoadUtils.getExcludedTables(builtRules); - Map> actualDataNodes = load(databaseName, dataSourceMap, excludedTables); Collection splitTables = SingleTableLoadUtils.splitTableLines(configuredTables); if (splitTables.contains(SingleTableConstants.ALL_TABLES) || splitTables.contains(SingleTableConstants.ALL_SCHEMA_TABLES)) { - return actualDataNodes; + return load(databaseName, dataSourceMap, excludedTables); } + Collection configuredDataSources = configuredTables.stream().map(DataNode::new).map(DataNode::getDataSourceName).collect(Collectors.toSet()); + Map configuredDataSourceMap = dataSourceMap.entrySet().stream().filter(entry -> configuredDataSources.contains(entry.getKey())) + .collect(Collectors.toMap(Entry::getKey, Entry::getValue)); + Map> actualDataNodes = load(databaseName, configuredDataSourceMap, excludedTables); Map>> configuredTableMap = getConfiguredTableMap(databaseName, protocolType, splitTables); return loadSpecifiedDataNodes(actualDataNodes, featureRequiredSingleTables, configuredTableMap); }