This is an automated email from the ASF dual-hosted git repository.

tuichenchuxin 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 8fff0174404 Optimize DataNodeContainedRule#getAllTables logic for case 
insensitive (#20072)
8fff0174404 is described below

commit 8fff01744043f393751b94027453e82d1cbd3a11
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Thu Aug 11 13:53:23 2022 +0800

    Optimize DataNodeContainedRule#getAllTables logic for case insensitive 
(#20072)
---
 .../java/org/apache/shardingsphere/sharding/rule/ShardingRule.java  | 5 +++--
 .../context/refresher/type/CreateTableStatementSchemaRefresher.java | 3 +--
 .../data/pipeline/core/util/PipelineJobPreparerUtils.java           | 6 +++---
 .../org/apache/shardingsphere/singletable/rule/SingleTableRule.java | 4 +++-
 .../java/org/apache/shardingsphere/mode/manager/ContextManager.java | 3 +--
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
index 23e82c1f9a5..0eba1f8f263 100644
--- 
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
+++ 
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java
@@ -29,13 +29,13 @@ import 
org.apache.shardingsphere.infra.config.exception.ShardingSphereConfigurat
 import org.apache.shardingsphere.infra.config.rule.RuleConfiguration;
 import org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine;
 import org.apache.shardingsphere.infra.datanode.DataNode;
-import org.apache.shardingsphere.infra.util.expr.InlineExpressionParser;
 import org.apache.shardingsphere.infra.instance.InstanceContext;
 import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
 import 
org.apache.shardingsphere.infra.metadata.database.schema.decorator.model.ShardingSphereSchema;
 import org.apache.shardingsphere.infra.rule.identifier.scope.DatabaseRule;
 import 
org.apache.shardingsphere.infra.rule.identifier.type.DataNodeContainedRule;
 import org.apache.shardingsphere.infra.rule.identifier.type.TableContainedRule;
+import org.apache.shardingsphere.infra.util.expr.InlineExpressionParser;
 import 
org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration;
 import org.apache.shardingsphere.sharding.api.config.ShardingRuleConfiguration;
 import 
org.apache.shardingsphere.sharding.api.config.rule.ShardingAutoTableRuleConfiguration;
@@ -314,7 +314,8 @@ public final class ShardingRule implements DatabaseRule, 
DataNodeContainedRule,
     
     @Override
     public Collection<String> getAllTables() {
-        Collection<String> result = new HashSet<>(getTables());
+        Collection<String> result = new 
TreeSet<>(String.CASE_INSENSITIVE_ORDER);
+        result.addAll(getTables());
         result.addAll(getAllActualTables());
         return result;
     }
diff --git 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
index b582595e1a2..81ed7a29ce4 100644
--- 
a/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
+++ 
b/shardingsphere-infra/shardingsphere-infra-context/src/main/java/org/apache/shardingsphere/infra/context/refresher/type/CreateTableStatementSchemaRefresher.java
@@ -44,8 +44,7 @@ public final class CreateTableStatementSchemaRefresher 
implements MetaDataRefres
     @Override
     public Optional<MetaDataRefreshedEvent> refresh(final 
ShardingSphereDatabase database, final Collection<String> logicDataSourceNames,
                                                     final String schemaName, 
final CreateTableStatement sqlStatement, final ConfigurationProperties props) 
throws SQLException {
-        // TODO Fixme Remove table conversion to lowercase
-        String tableName = 
sqlStatement.getTable().getTableName().getIdentifier().getValue().toLowerCase();
+        String tableName = 
sqlStatement.getTable().getTableName().getIdentifier().getValue();
         if (!containsInImmutableDataNodeContainedRule(tableName, database)) {
             
database.getRuleMetaData().findRules(MutableDataNodeRule.class).forEach(each -> 
each.put(logicDataSourceNames.iterator().next(), schemaName, tableName));
         }
diff --git 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineJobPreparerUtils.java
 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineJobPreparerUtils.java
index 25e0c10471e..de6dcb4b892 100644
--- 
a/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineJobPreparerUtils.java
+++ 
b/shardingsphere-kernel/shardingsphere-data-pipeline/shardingsphere-data-pipeline-core/src/main/java/org/apache/shardingsphere/data/pipeline/core/util/PipelineJobPreparerUtils.java
@@ -137,7 +137,6 @@ public final class PipelineJobPreparerUtils {
         dataSourceChecker.checkTargetTable(targetDataSources, 
importerConfig.getTableNameSchemaNameMapping(), 
importerConfig.getLogicTableNames());
     }
     
-    
     /**
      * Cleanup job preparer.
      *
@@ -158,8 +157,9 @@ public final class PipelineJobPreparerUtils {
         }
         if (pipelineDataSourceConfig instanceof 
StandardPipelineDataSourceConfiguration) {
             StandardPipelineDataSourceConfiguration dataSourceConfig = 
(StandardPipelineDataSourceConfiguration) pipelineDataSourceConfig;
-            try (PipelineDataSourceWrapper dataSource = new 
PipelineDataSourceWrapper(
-                    DataSourcePoolCreator.create((DataSourceProperties) 
dataSourceConfig.getDataSourceConfiguration()), databaseType)) {
+            try (
+                    PipelineDataSourceWrapper dataSource = new 
PipelineDataSourceWrapper(
+                            
DataSourcePoolCreator.create((DataSourceProperties) 
dataSourceConfig.getDataSourceConfiguration()), databaseType)) {
                 positionInitializer.destroy(dataSource);
             }
         }
diff --git 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
index 347e8a4e79c..d7da7b492f9 100644
--- 
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
+++ 
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/rule/SingleTableRule.java
@@ -264,7 +264,9 @@ public final class SingleTableRule implements DatabaseRule, 
DataNodeContainedRul
     
     @Override
     public Collection<String> getAllTables() {
-        return new HashSet<>(tableNames.values());
+        Collection<String> result = new 
TreeSet<>(String.CASE_INSENSITIVE_ORDER);
+        result.addAll(tableNames.values());
+        return result;
     }
     
     @Override
diff --git 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
index bc758589d6c..23de962f504 100644
--- 
a/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
+++ 
b/shardingsphere-mode/shardingsphere-mode-core/src/main/java/org/apache/shardingsphere/mode/manager/ContextManager.java
@@ -176,9 +176,8 @@ public final class ContextManager implements AutoCloseable {
     }
     
     private boolean containsMutableDataNodeRule(final ShardingSphereDatabase 
database, final String tableName) {
-        // TODO Fixme Remove table conversion to lowercase
         return 
database.getRuleMetaData().findRules(DataNodeContainedRule.class).stream()
-                .filter(each -> !(each instanceof 
MutableDataNodeRule)).anyMatch(each -> 
each.getAllTables().contains(tableName.toLowerCase()));
+                .filter(each -> !(each instanceof 
MutableDataNodeRule)).anyMatch(each -> each.getAllTables().contains(tableName));
     }
     
     private void dropTable(final String databaseName, final String schemaName, 
final String toBeDeletedTableName) {

Reply via email to