You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by me...@apache.org on 2020/11/25 23:09:10 UTC
[shardingsphere] branch master updated: Add default tables into
ShardingSphere metadata (#8341)
This is an automated email from the ASF dual-hosted git repository.
menghaoran 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 39616f4 Add default tables into ShardingSphere metadata (#8341)
39616f4 is described below
commit 39616f46b9f69c3b5648e9a45538f14aed6b4e58
Author: Liang Zhang <te...@163.com>
AuthorDate: Thu Nov 26 07:08:41 2020 +0800
Add default tables into ShardingSphere metadata (#8341)
* Add default tables into ShardingSphere metadata
* Add default tables into ShardingSphere metadata
---
.../metadata/schema/builder/SchemaBuilder.java | 29 ++++++++++++++++++++++
1 file changed, 29 insertions(+)
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 cbd95f8..900d56f 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
@@ -20,10 +20,16 @@ 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.builder.loader.SchemaMetaDataLoader;
+import org.apache.shardingsphere.infra.metadata.schema.model.TableMetaData;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
import org.apache.shardingsphere.infra.rule.type.TableContainedRule;
+import javax.sql.DataSource;
import java.sql.SQLException;
+import java.util.Collection;
+import java.util.LinkedHashSet;
+import java.util.Map.Entry;
/**
* Schema builder.
@@ -49,6 +55,29 @@ public final class SchemaBuilder {
}
}
}
+ appendRemainTables(materials, result);
+ return result;
+ }
+
+ private static void appendRemainTables(final SchemaBuilderMaterials materials, final ShardingSphereSchema schema) throws SQLException {
+ Collection<String> tableNames = new LinkedHashSet<>();
+ for (Entry<String, DataSource> entry: materials.getDataSourceMap().entrySet()) {
+ tableNames.addAll(SchemaMetaDataLoader.loadAllTableNames(entry.getValue(), materials.getDatabaseType()));
+ }
+ tableNames.removeAll(getExistedTables(materials.getRules(), schema));
+ for (String each : tableNames) {
+ schema.put(each, new TableMetaData());
+ }
+ }
+
+ private static Collection<String> getExistedTables(final Collection<ShardingSphereRule> rules, final ShardingSphereSchema schema) {
+ Collection<String> result = new LinkedHashSet<>();
+ for (ShardingSphereRule each : rules) {
+ if (each instanceof TableContainedRule) {
+ result.addAll(((TableContainedRule) each).getTables());
+ }
+ }
+ result.addAll(schema.getAllTableNames());
return result;
}
}