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) {