This is an automated email from the ASF dual-hosted git repository. chengzhang 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 f141d770bd3 Use CaseInsensitiveSet to replace TreeSet<>(String.CASE_INSENSITIVE_ORDER) (#34464) f141d770bd3 is described below commit f141d770bd35bc3a0c4e31cb58bc5576ad32a039 Author: Zhengqiang Duan <duanzhengqi...@apache.org> AuthorDate: Fri Jan 24 15:01:05 2025 +0800 Use CaseInsensitiveSet to replace TreeSet<>(String.CASE_INSENSITIVE_ORDER) (#34464) --- .../rewrite/condition/EncryptConditionEngine.java | 37 +++++++++++----------- .../type/complex/ShardingComplexRouteEngine.java | 4 +-- .../type/complex/ComplexShardingStrategy.java | 8 ++--- .../strategy/type/hint/HintShardingStrategy.java | 8 ++--- .../type/standard/StandardShardingStrategy.java | 8 ++--- .../shardingsphere/sharding/rule/ShardingRule.java | 4 +-- .../sharding/rule/ShardingTable.java | 4 +-- .../single/util/SingleTableLoadUtils.java | 6 ++-- .../admin/OpenGaussAdminExecutorCreator.java | 7 ++-- 9 files changed, 38 insertions(+), 48 deletions(-) diff --git a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java index 4e3435d7642..3266573ed58 100644 --- a/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java +++ b/features/encrypt/core/src/main/java/org/apache/shardingsphere/encrypt/rewrite/condition/EncryptConditionEngine.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.encrypt.rewrite.condition; +import com.cedarsoftware.util.CaseInsensitiveSet; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.encrypt.exception.syntax.UnsupportedEncryptSQLException; import org.apache.shardingsphere.encrypt.rewrite.condition.impl.EncryptBinaryCondition; @@ -44,8 +45,6 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Optional; -import java.util.Set; -import java.util.TreeSet; /** * Encrypt condition engine. @@ -54,26 +53,26 @@ import java.util.TreeSet; @RequiredArgsConstructor public final class EncryptConditionEngine { - private static final Set<String> LOGICAL_OPERATOR = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + private static final Collection<String> LOGICAL_OPERATORS = new CaseInsensitiveSet<>(); - private static final Set<String> SUPPORTED_COMPARE_OPERATOR = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + private static final Collection<String> SUPPORTED_COMPARE_OPERATORS = new CaseInsensitiveSet<>(); private final EncryptRule rule; static { - LOGICAL_OPERATOR.add("AND"); - LOGICAL_OPERATOR.add("&&"); - LOGICAL_OPERATOR.add("OR"); - LOGICAL_OPERATOR.add("||"); - SUPPORTED_COMPARE_OPERATOR.add("="); - SUPPORTED_COMPARE_OPERATOR.add("<>"); - SUPPORTED_COMPARE_OPERATOR.add("!="); - SUPPORTED_COMPARE_OPERATOR.add(">"); - SUPPORTED_COMPARE_OPERATOR.add("<"); - SUPPORTED_COMPARE_OPERATOR.add(">="); - SUPPORTED_COMPARE_OPERATOR.add("<="); - SUPPORTED_COMPARE_OPERATOR.add("IS"); - SUPPORTED_COMPARE_OPERATOR.add("LIKE"); + LOGICAL_OPERATORS.add("AND"); + LOGICAL_OPERATORS.add("&&"); + LOGICAL_OPERATORS.add("OR"); + LOGICAL_OPERATORS.add("||"); + SUPPORTED_COMPARE_OPERATORS.add("="); + SUPPORTED_COMPARE_OPERATORS.add("<>"); + SUPPORTED_COMPARE_OPERATORS.add("!="); + SUPPORTED_COMPARE_OPERATORS.add(">"); + SUPPORTED_COMPARE_OPERATORS.add("<"); + SUPPORTED_COMPARE_OPERATORS.add(">="); + SUPPORTED_COMPARE_OPERATORS.add("<="); + SUPPORTED_COMPARE_OPERATORS.add("IS"); + SUPPORTED_COMPARE_OPERATORS.add("LIKE"); } /** @@ -148,10 +147,10 @@ public final class EncryptConditionEngine { private Optional<EncryptCondition> createBinaryEncryptCondition(final BinaryOperationExpression expression, final String tableName) { String operator = expression.getOperator(); - if (LOGICAL_OPERATOR.contains(operator)) { + if (LOGICAL_OPERATORS.contains(operator)) { return Optional.empty(); } - ShardingSpherePreconditions.checkContains(SUPPORTED_COMPARE_OPERATOR, operator, () -> new UnsupportedEncryptSQLException(operator)); + ShardingSpherePreconditions.checkContains(SUPPORTED_COMPARE_OPERATORS, operator, () -> new UnsupportedEncryptSQLException(operator)); return createCompareEncryptCondition(tableName, expression); } diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/complex/ShardingComplexRouteEngine.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/complex/ShardingComplexRouteEngine.java index 98e2ff506eb..25a8c4a3cbd 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/complex/ShardingComplexRouteEngine.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/complex/ShardingComplexRouteEngine.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sharding.route.engine.type.complex; +import com.cedarsoftware.util.CaseInsensitiveSet; import lombok.RequiredArgsConstructor; import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; @@ -32,7 +33,6 @@ import org.apache.shardingsphere.sharding.rule.ShardingTable; import java.util.Collection; import java.util.LinkedList; import java.util.Optional; -import java.util.TreeSet; /** * Sharding complex route engine. @@ -52,7 +52,7 @@ public final class ShardingComplexRouteEngine implements ShardingRouteEngine { @Override public RouteContext route(final ShardingRule shardingRule) { - Collection<String> bindingTableNames = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + Collection<String> bindingTableNames = new CaseInsensitiveSet<>(); Collection<RouteContext> routeContexts = new LinkedList<>(); for (String each : logicTables) { Optional<ShardingTable> shardingTable = shardingRule.findShardingTable(each); diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/complex/ComplexShardingStrategy.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/complex/ComplexShardingStrategy.java index fdaac6a7f45..5c98cbf0efa 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/complex/ComplexShardingStrategy.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/complex/ComplexShardingStrategy.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sharding.route.strategy.type.complex; +import com.cedarsoftware.util.CaseInsensitiveSet; import com.google.common.base.Splitter; import com.google.common.collect.Range; import lombok.Getter; @@ -34,7 +35,6 @@ import org.apache.shardingsphere.sharding.route.strategy.ShardingStrategy; import java.util.Collection; import java.util.HashMap; import java.util.Map; -import java.util.TreeSet; /** * Complex sharding strategy. @@ -49,7 +49,7 @@ public final class ComplexShardingStrategy implements ShardingStrategy { public ComplexShardingStrategy(final String shardingColumns, final ComplexKeysShardingAlgorithm<?> shardingAlgorithm) { ShardingSpherePreconditions.checkNotNull(shardingColumns, () -> new MissingRequiredShardingConfigurationException("Complex sharding columns")); ShardingSpherePreconditions.checkNotNull(shardingAlgorithm, () -> new MissingRequiredShardingConfigurationException("Complex sharding algorithm")); - this.shardingColumns = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + this.shardingColumns = new CaseInsensitiveSet<>(); this.shardingColumns.addAll(Splitter.on(",").trimResults().splitToList(shardingColumns)); this.shardingAlgorithm = shardingAlgorithm; } @@ -70,8 +70,6 @@ public final class ComplexShardingStrategy implements ShardingStrategy { logicTableName = each.getTableName(); } Collection<String> shardingResult = shardingAlgorithm.doSharding(availableTargetNames, new ComplexKeysShardingValue(logicTableName, columnShardingValues, columnRangeValues)); - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - result.addAll(shardingResult); - return result; + return new CaseInsensitiveSet<>(shardingResult); } } diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/hint/HintShardingStrategy.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/hint/HintShardingStrategy.java index 4ff9568b1f6..1c17ab6e692 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/hint/HintShardingStrategy.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/hint/HintShardingStrategy.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sharding.route.strategy.type.hint; +import com.cedarsoftware.util.CaseInsensitiveSet; import lombok.Getter; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; import org.apache.shardingsphere.infra.datanode.DataNodeInfo; @@ -29,7 +30,6 @@ import org.apache.shardingsphere.sharding.route.engine.condition.value.ShardingC import org.apache.shardingsphere.sharding.route.strategy.ShardingStrategy; import java.util.Collection; -import java.util.TreeSet; /** * Hint sharding strategy. @@ -43,7 +43,7 @@ public final class HintShardingStrategy implements ShardingStrategy { public HintShardingStrategy(final HintShardingAlgorithm<?> shardingAlgorithm) { ShardingSpherePreconditions.checkNotNull(shardingAlgorithm, () -> new MissingRequiredShardingConfigurationException("Hint sharding algorithm")); - shardingColumns = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + shardingColumns = new CaseInsensitiveSet<>(); this.shardingAlgorithm = shardingAlgorithm; } @@ -54,8 +54,6 @@ public final class HintShardingStrategy implements ShardingStrategy { ListShardingConditionValue<?> shardingValue = (ListShardingConditionValue) shardingConditionValues.iterator().next(); Collection<String> shardingResult = shardingAlgorithm.doSharding(availableTargetNames, new HintShardingValue(shardingValue.getTableName(), shardingValue.getColumnName(), shardingValue.getValues())); - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - result.addAll(shardingResult); - return result; + return new CaseInsensitiveSet<>(shardingResult); } } diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/standard/StandardShardingStrategy.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/standard/StandardShardingStrategy.java index d9879570892..935998b5bef 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/standard/StandardShardingStrategy.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/route/strategy/type/standard/StandardShardingStrategy.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sharding.route.strategy.type.standard; +import com.cedarsoftware.util.CaseInsensitiveSet; import lombok.Getter; import org.apache.shardingsphere.infra.config.props.ConfigurationProperties; import org.apache.shardingsphere.infra.datanode.DataNodeInfo; @@ -33,7 +34,6 @@ import org.apache.shardingsphere.sharding.route.strategy.ShardingStrategy; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; -import java.util.TreeSet; /** * Standard sharding strategy. @@ -48,7 +48,7 @@ public final class StandardShardingStrategy implements ShardingStrategy { public StandardShardingStrategy(final String shardingColumn, final StandardShardingAlgorithm<?> shardingAlgorithm) { ShardingSpherePreconditions.checkNotNull(shardingColumn, () -> new MissingRequiredShardingConfigurationException("Standard sharding column")); ShardingSpherePreconditions.checkNotNull(shardingAlgorithm, () -> new MissingRequiredShardingConfigurationException("Standard sharding algorithm")); - Collection<String> shardingColumns = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + Collection<String> shardingColumns = new CaseInsensitiveSet<>(); shardingColumns.add(shardingColumn); this.shardingColumns = Collections.unmodifiableCollection(shardingColumns); this.shardingAlgorithm = shardingAlgorithm; @@ -62,9 +62,7 @@ public final class StandardShardingStrategy implements ShardingStrategy { Collection<String> shardingResult = shardingConditionValue instanceof ListShardingConditionValue ? doSharding(availableTargetNames, (ListShardingConditionValue) shardingConditionValue, dataNodeInfo) : doSharding(availableTargetNames, (RangeShardingConditionValue) shardingConditionValue, dataNodeInfo); - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - result.addAll(shardingResult); - return result; + return new CaseInsensitiveSet<>(shardingResult); } @SuppressWarnings({"unchecked", "rawtypes"}) diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java index 63300dfc59b..92c292e2b9b 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingRule.java @@ -76,7 +76,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; -import java.util.TreeSet; import java.util.function.Function; import java.util.stream.Collectors; @@ -331,8 +330,7 @@ public final class ShardingRule implements DatabaseRule { if (!bindingTableRule.isPresent()) { return false; } - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); - result.addAll(bindingTableRule.get().getAllLogicTables()); + Collection<String> result = new CaseInsensitiveSet<>(bindingTableRule.get().getAllLogicTables()); return !result.isEmpty() && result.containsAll(logicTableNames); } diff --git a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingTable.java b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingTable.java index e49310b58cb..fd9946750fe 100644 --- a/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingTable.java +++ b/features/sharding/core/src/main/java/org/apache/shardingsphere/sharding/rule/ShardingTable.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.sharding.rule; +import com.cedarsoftware.util.CaseInsensitiveSet; import com.google.common.base.Strings; import lombok.AccessLevel; import lombok.Getter; @@ -47,7 +48,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; -import java.util.TreeSet; import java.util.stream.Collectors; /** @@ -159,7 +159,7 @@ public final class ShardingTable { } private Set<String> getActualTables() { - return actualDataNodes.stream().map(DataNode::getTableName).collect(Collectors.toCollection(() -> new TreeSet<>(String.CASE_INSENSITIVE_ORDER))); + return actualDataNodes.stream().map(DataNode::getTableName).collect(Collectors.toCollection(CaseInsensitiveSet::new)); } private void addActualTable(final String datasourceName, final String tableName) { diff --git a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java index add22decdc5..b2eb4876c84 100644 --- a/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java +++ b/kernel/single/core/src/main/java/org/apache/shardingsphere/single/util/SingleTableLoadUtils.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.single.util; +import com.cedarsoftware.util.CaseInsensitiveSet; import com.google.common.base.Splitter; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -31,7 +32,6 @@ import org.apache.shardingsphere.single.constant.SingleTableConstants; import java.util.Collection; import java.util.LinkedHashSet; import java.util.Optional; -import java.util.TreeSet; import java.util.stream.Collectors; /** @@ -49,7 +49,7 @@ public final class SingleTableLoadUtils { * @return excluded tables */ public static Collection<String> getExcludedTables(final Collection<ShardingSphereRule> builtRules) { - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + Collection<String> result = new CaseInsensitiveSet<>(); for (ShardingSphereRule each : builtRules) { Optional<TableMapperRuleAttribute> ruleAttribute = each.getAttributes().findAttribute(TableMapperRuleAttribute.class); if (ruleAttribute.isPresent()) { @@ -67,7 +67,7 @@ public final class SingleTableLoadUtils { * @return feature required single tables */ public static Collection<String> getFeatureRequiredSingleTables(final Collection<ShardingSphereRule> builtRules) { - Collection<String> result = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + Collection<String> result = new CaseInsensitiveSet<>(); for (ShardingSphereRule each : builtRules) { Optional<TableMapperRuleAttribute> ruleAttribute = each.getAttributes().findAttribute(TableMapperRuleAttribute.class); if (!ruleAttribute.isPresent()) { diff --git a/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java b/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java index fa5165d79bc..6e91bdac1e4 100644 --- a/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java +++ b/proxy/backend/type/opengauss/src/main/java/org/apache/shardingsphere/proxy/backend/opengauss/handler/admin/OpenGaussAdminExecutorCreator.java @@ -17,6 +17,7 @@ package org.apache.shardingsphere.proxy.backend.opengauss.handler.admin; +import com.cedarsoftware.util.CaseInsensitiveSet; import org.apache.shardingsphere.infra.binder.context.statement.SQLStatementContext; import org.apache.shardingsphere.infra.binder.context.type.TableAvailable; import org.apache.shardingsphere.infra.metadata.database.schema.manager.SystemSchemaManager; @@ -34,17 +35,15 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Optional; -import java.util.Set; -import java.util.TreeSet; /** * Database admin executor creator for openGauss. */ public final class OpenGaussAdminExecutorCreator implements DatabaseAdminExecutorCreator { - private static final Set<String> SYSTEM_CATALOG_QUERY_EXPRESSIONS = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + private static final Collection<String> SYSTEM_CATALOG_QUERY_EXPRESSIONS = new CaseInsensitiveSet<>(); - private static final Set<String> SYSTEM_CATALOG_TABLES = new TreeSet<>(String.CASE_INSENSITIVE_ORDER); + private static final Collection<String> SYSTEM_CATALOG_TABLES = new CaseInsensitiveSet<>(); static { SYSTEM_CATALOG_QUERY_EXPRESSIONS.add("VERSION()");