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;
     }
     
     /**

Reply via email to