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 14a708e Build all schema in constructor to improve performance (#7602)
14a708e is described below
commit 14a708ea1e6f0f5c92e69c1f8f1cc2ca7688a399
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Sep 25 16:12:14 2020 +0800
Build all schema in constructor to improve performance (#7602)
---
.../infra/metadata/schema/RuleSchemaMetaData.java | 27 +++++++++++++++-------
1 file changed, 19 insertions(+), 8 deletions(-)
diff --git
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaData.java
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaData.java
index bc65bb6..9b9e055 100644
---
a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaData.java
+++
b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/schema/RuleSchemaMetaData.java
@@ -18,7 +18,6 @@
package org.apache.shardingsphere.infra.metadata.schema;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import
org.apache.shardingsphere.sql.parser.binder.metadata.schema.SchemaMetaData;
import
org.apache.shardingsphere.sql.parser.binder.metadata.table.TableMetaData;
@@ -29,24 +28,36 @@ import java.util.Map;
/**
* Rule schema meta data.
*/
-@RequiredArgsConstructor
-@Getter
public final class RuleSchemaMetaData {
+ @Getter
private final SchemaMetaData configuredSchemaMetaData;
+ @Getter
private final Map<String, Collection<String>>
unconfiguredSchemaMetaDataMap;
+ private final SchemaMetaData allSchemaMetaData;
+
+ public RuleSchemaMetaData(final SchemaMetaData configuredSchemaMetaData,
final Map<String, Collection<String>> unconfiguredSchemaMetaDataMap) {
+ this.configuredSchemaMetaData = configuredSchemaMetaData;
+ this.unconfiguredSchemaMetaDataMap = unconfiguredSchemaMetaDataMap;
+ allSchemaMetaData = createSchemaMetaData();
+ }
+
+ private SchemaMetaData createSchemaMetaData() {
+ SchemaMetaData result = new SchemaMetaData();
+
unconfiguredSchemaMetaDataMap.values().stream().flatMap(Collection::stream).forEach(tableName
-> result.put(tableName, new TableMetaData()));
+ result.merge(configuredSchemaMetaData);
+ return result;
+ }
+
/**
* Get schema meta data.
- *
+ *
* @return schema meta data
*/
public SchemaMetaData getSchemaMetaData() {
- SchemaMetaData result = new SchemaMetaData();
- unconfiguredSchemaMetaDataMap.values().stream().flatMap(tableNames ->
tableNames.stream()).forEach(tableName -> result.put(tableName, new
TableMetaData()));
- result.merge(configuredSchemaMetaData);
- return result;
+ return allSchemaMetaData;
}
/**