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

duanzhengqiang 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 5090d53a164 Refactor ShowStatusFromReadwriteSplittingRulesExecutor 
(#30176)
5090d53a164 is described below

commit 5090d53a1641ee2ec61473f9e40440c0e2df6a96
Author: Raigor <[email protected]>
AuthorDate: Sun Feb 18 18:33:37 2024 +0800

    Refactor ShowStatusFromReadwriteSplittingRulesExecutor (#30176)
---
 .../rule/ReadwriteSplittingRule.java               |  1 +
 ...wStatusFromReadwriteSplittingRulesExecutor.java | 83 ++++++----------------
 ...tusFromReadwriteSplittingRulesExecutorTest.java | 30 ++++----
 ...StatusFromReadwriteSplittingRulesStatement.java | 12 +++-
 .../handler/enums/ShardingStrategyType.java        |  6 +-
 .../AlterDefaultShardingStrategyExecutor.java      |  2 +-
 .../CreateDefaultShardingStrategyExecutor.java     |  2 +-
 .../distsql/handler/util/CollectionUtils.java      |  4 +-
 8 files changed, 52 insertions(+), 88 deletions(-)

diff --git 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
index 9b8e9c662bb..250a51aa681 100644
--- 
a/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
+++ 
b/features/readwrite-splitting/core/src/main/java/org/apache/shardingsphere/readwritesplitting/rule/ReadwriteSplittingRule.java
@@ -63,6 +63,7 @@ public final class ReadwriteSplittingRule implements 
DatabaseRule, DataSourceCon
     
     private final Map<String, ReadQueryLoadBalanceAlgorithm> loadBalancers;
     
+    @Getter
     private final Map<String, ReadwriteSplittingDataSourceRule> 
dataSourceRules;
     
     private final InstanceContext instanceContext;
diff --git 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutor.java
 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutor.java
index 1de3dbd8137..32e597f0763 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutor.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutor.java
@@ -17,43 +17,26 @@
 
 package org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
 
-import com.google.common.base.Strings;
 import lombok.Setter;
-import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorDatabaseAware;
+import 
org.apache.shardingsphere.distsql.handler.aware.DistSQLExecutorRuleAware;
 import 
org.apache.shardingsphere.distsql.handler.engine.query.DistSQLQueryExecutor;
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.metadata.database.schema.QualifiedDatabase;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.ExportableRule;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.RuleExportEngine;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableConstants;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableItemConstants;
 import org.apache.shardingsphere.infra.state.datasource.DataSourceState;
-import org.apache.shardingsphere.mode.event.storage.StorageNodeDataSource;
-import org.apache.shardingsphere.mode.event.storage.StorageNodeRole;
 import org.apache.shardingsphere.mode.manager.ContextManager;
-import org.apache.shardingsphere.mode.storage.service.StorageNodeStatusService;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowStatusFromReadwriteSplittingRulesStatement;
+import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedHashMap;
-import java.util.LinkedHashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
 import java.util.stream.Collectors;
 
 /**
  * Show status from readwrite-splitting rules executor.
  */
 @Setter
-public final class ShowStatusFromReadwriteSplittingRulesExecutor implements 
DistSQLQueryExecutor<ShowStatusFromReadwriteSplittingRulesStatement>, 
DistSQLExecutorDatabaseAware {
+public final class ShowStatusFromReadwriteSplittingRulesExecutor implements 
DistSQLQueryExecutor<ShowStatusFromReadwriteSplittingRulesStatement>, 
DistSQLExecutorRuleAware<ReadwriteSplittingRule> {
     
-    private ShardingSphereDatabase database;
+    private ReadwriteSplittingRule rule;
     
     @Override
     public Collection<String> getColumnNames(final 
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement) {
@@ -62,58 +45,36 @@ public final class 
ShowStatusFromReadwriteSplittingRulesExecutor implements Dist
     
     @Override
     public Collection<LocalDataQueryResultRow> getRows(final 
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement, final 
ContextManager contextManager) {
-        Collection<String> allReadResources = 
getAllReadResources(sqlStatement.getGroupName());
-        Map<String, StorageNodeDataSource> persistentReadResources = 
getPersistentReadResources(database.getName(), contextManager);
-        return buildRows(allReadResources, persistentReadResources);
+        return buildRows(getReadDataSourceNames(sqlStatement), 
getDisabledDataSourceNames(sqlStatement));
     }
     
-    @SuppressWarnings("unchecked")
-    private Collection<String> getAllReadResources(final String groupName) {
-        Collection<String> exportKeys = 
Arrays.asList(ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE, 
ExportableConstants.EXPORT_DYNAMIC_READWRITE_SPLITTING_RULE);
-        Map<String, Object> exportMap = 
database.getRuleMetaData().findRules(ExportableRule.class).stream()
-                .filter(each -> new 
RuleExportEngine(each).containExportableKey(exportKeys)).findFirst().map(each 
-> new 
RuleExportEngine(each).export(exportKeys)).orElse(Collections.emptyMap());
-        Map<String, Map<String, String>> allReadwriteRuleMap = 
exportMap.values().stream().map(each -> ((Map<String, Map<String, String>>) 
each).entrySet())
-                
.flatMap(Collection::stream).collect(Collectors.toMap(Entry::getKey, 
Entry::getValue, (oldValue, currentValue) -> currentValue, LinkedHashMap::new));
-        if (!Strings.isNullOrEmpty(groupName)) {
-            allReadwriteRuleMap = 
allReadwriteRuleMap.entrySet().stream().filter(each -> 
groupName.equalsIgnoreCase(each.getKey()))
-                    .collect(Collectors.toMap(Entry::getKey, Entry::getValue, 
(oldValue, currentValue) -> currentValue, LinkedHashMap::new));
+    private Collection<String> getReadDataSourceNames(final 
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement) {
+        if (sqlStatement.getRuleName().isPresent()) {
+            return rule.getDataSourceRules().entrySet().stream().filter(entry 
-> entry.getKey().equalsIgnoreCase(sqlStatement.getRuleName().get()))
+                    .flatMap(entry -> 
entry.getValue().getReadwriteSplittingGroup().getReadDataSources().stream()).collect(Collectors.toList());
         }
-        return allReadwriteRuleMap.values().stream().map(each -> 
each.get(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES)).filter(each -> 
null != each && !each.isEmpty())
-                
.map(this::deconstructString).flatMap(Collection::stream).collect(Collectors.toCollection(LinkedHashSet::new));
+        return rule.getDataSourceRules().entrySet().stream().flatMap(entry -> 
entry.getValue().getReadwriteSplittingGroup().getReadDataSources().stream()).collect(Collectors.toList());
     }
     
-    private Map<String, StorageNodeDataSource> 
getPersistentReadResources(final String databaseName, final ContextManager 
contextManager) {
-        if (!contextManager.getInstanceContext().isCluster()) {
-            return Collections.emptyMap();
+    private Collection<String> getDisabledDataSourceNames(final 
ShowStatusFromReadwriteSplittingRulesStatement sqlStatement) {
+        if (sqlStatement.getRuleName().isPresent()) {
+            return rule.getDataSourceRules().entrySet().stream().filter(entry 
-> entry.getKey().equalsIgnoreCase(sqlStatement.getRuleName().get()))
+                    .flatMap(entry -> 
entry.getValue().getDisabledDataSourceNames().stream()).collect(Collectors.toSet());
         }
-        Map<String, StorageNodeDataSource> storageNodes = new 
StorageNodeStatusService(contextManager.getMetaDataContexts().getPersistService().getRepository()).loadStorageNodes();
-        Map<String, StorageNodeDataSource> result = new HashMap<>();
-        storageNodes.entrySet().stream().filter(entry -> 
StorageNodeRole.MEMBER == entry.getValue().getRole()).forEach(entry -> {
-            QualifiedDatabase qualifiedDatabase = new 
QualifiedDatabase(entry.getKey());
-            if 
(databaseName.equalsIgnoreCase(qualifiedDatabase.getDatabaseName())) {
-                result.put(qualifiedDatabase.getDataSourceName(), 
entry.getValue());
-            }
-        });
-        return result;
+        return rule.getDataSourceRules().entrySet().stream().flatMap(entry -> 
entry.getValue().getDisabledDataSourceNames().stream()).collect(Collectors.toSet());
     }
     
-    private Collection<LocalDataQueryResultRow> buildRows(final 
Collection<String> readResources, final Map<String, StorageNodeDataSource> 
persistentReadResources) {
-        Map<DataSourceState, Map<String, StorageNodeDataSource>> 
persistentReadResourceGroup = persistentReadResources.entrySet().stream()
-                .collect(Collectors.groupingBy(each -> 
each.getValue().getStatus(), Collectors.toMap(Entry::getKey, Entry::getValue)));
-        Map<String, StorageNodeDataSource> disabledReadResources = 
persistentReadResourceGroup.getOrDefault(DataSourceState.DISABLED, 
Collections.emptyMap());
-        Map<String, StorageNodeDataSource> enabledReadResources = 
persistentReadResourceGroup.getOrDefault(DataSourceState.ENABLED, 
Collections.emptyMap());
-        readResources.removeIf(disabledReadResources::containsKey);
-        readResources.addAll(enabledReadResources.keySet());
-        readResources.addAll(disabledReadResources.keySet());
-        return readResources.stream().map(each -> buildRow(each, 
disabledReadResources.get(each))).collect(Collectors.toList());
+    private Collection<LocalDataQueryResultRow> buildRows(final 
Collection<String> readDataSourceNames, final Collection<String> 
disabledDataSourceNames) {
+        return readDataSourceNames.stream().map(each -> buildRow(each, 
disabledDataSourceNames.contains(each))).collect(Collectors.toList());
     }
     
-    private List<String> deconstructString(final String str) {
-        return new LinkedList<>(Arrays.asList(str.split(",")));
+    private LocalDataQueryResultRow buildRow(final String dataSourceName, 
final boolean disabled) {
+        return new LocalDataQueryResultRow(dataSourceName, disabled ? 
DataSourceState.DISABLED : DataSourceState.ENABLED);
     }
     
-    private LocalDataQueryResultRow buildRow(final String resource, final 
StorageNodeDataSource storageNodeDataSource) {
-        return null == storageNodeDataSource ? new 
LocalDataQueryResultRow(resource, DataSourceState.ENABLED) : new 
LocalDataQueryResultRow(resource, storageNodeDataSource.getStatus());
+    @Override
+    public Class<ReadwriteSplittingRule> getRuleClass() {
+        return ReadwriteSplittingRule.class;
     }
     
     @Override
diff --git 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
index 6a41b2ce6d8..88f73be8410 100644
--- 
a/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
+++ 
b/features/readwrite-splitting/distsql/handler/src/test/java/org/apache/shardingsphere/readwritesplitting/distsql/handler/query/ShowStatusFromReadwriteSplittingRulesExecutorTest.java
@@ -18,19 +18,16 @@
 package org.apache.shardingsphere.readwritesplitting.distsql.handler.query;
 
 import 
org.apache.shardingsphere.infra.merge.result.impl.local.LocalDataQueryResultRow;
-import 
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.ExportableRule;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableConstants;
-import 
org.apache.shardingsphere.infra.rule.identifier.type.exportable.constant.ExportableItemConstants;
 import org.apache.shardingsphere.mode.manager.ContextManager;
 import 
org.apache.shardingsphere.readwritesplitting.distsql.statement.ShowStatusFromReadwriteSplittingRulesStatement;
+import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingDataSourceRule;
 import 
org.apache.shardingsphere.readwritesplitting.rule.ReadwriteSplittingRule;
 import org.junit.jupiter.api.Test;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.Map;
 
 import static org.hamcrest.CoreMatchers.is;
@@ -44,7 +41,7 @@ class ShowStatusFromReadwriteSplittingRulesExecutorTest {
     @Test
     void assertGetRowData() {
         ShowStatusFromReadwriteSplittingRulesExecutor executor = new 
ShowStatusFromReadwriteSplittingRulesExecutor();
-        executor.setDatabase(mockDatabase());
+        executor.setRule(mockRule());
         Collection<LocalDataQueryResultRow> actual = 
executor.getRows(mock(ShowStatusFromReadwriteSplittingRulesStatement.class), 
mock(ContextManager.class, RETURNS_DEEP_STUBS));
         assertThat(actual.size(), is(2));
         Iterator<LocalDataQueryResultRow> iterator = actual.iterator();
@@ -53,21 +50,20 @@ class ShowStatusFromReadwriteSplittingRulesExecutorTest {
         assertThat(row.getCell(2), is("ENABLED"));
         row = iterator.next();
         assertThat(row.getCell(1), is("read_ds_1"));
-        assertThat(row.getCell(2), is("ENABLED"));
+        assertThat(row.getCell(2), is("DISABLED"));
     }
     
-    private ShardingSphereDatabase mockDatabase() {
-        ShardingSphereDatabase result = mock(ShardingSphereDatabase.class, 
RETURNS_DEEP_STUBS);
-        ReadwriteSplittingRule readwriteSplittingRule = 
mock(ReadwriteSplittingRule.class);
-        
when(readwriteSplittingRule.getExportData()).thenReturn(Collections.singletonMap(ExportableConstants.EXPORT_STATIC_READWRITE_SPLITTING_RULE,
 exportDataSources()));
-        
when(result.getRuleMetaData().findRules(ExportableRule.class)).thenReturn(Collections.singleton(readwriteSplittingRule));
+    private ReadwriteSplittingRule mockRule() {
+        ReadwriteSplittingRule result = mock(ReadwriteSplittingRule.class);
+        Map<String, ReadwriteSplittingDataSourceRule> dataSourceRules = 
Collections.singletonMap("group_0", mockReadwriteSplittingDataSourceRule());
+        when(result.getDataSourceRules()).thenReturn(dataSourceRules);
         return result;
     }
     
-    private Map<String, Map<String, String>> exportDataSources() {
-        Map<String, String> exportedDataSources = new LinkedHashMap<>(2, 1F);
-        
exportedDataSources.put(ExportableItemConstants.PRIMARY_DATA_SOURCE_NAME, 
"write_ds");
-        
exportedDataSources.put(ExportableItemConstants.REPLICA_DATA_SOURCE_NAMES, 
"read_ds_0,read_ds_1");
-        return Collections.singletonMap("readwrite_ds", exportedDataSources);
+    private ReadwriteSplittingDataSourceRule 
mockReadwriteSplittingDataSourceRule() {
+        ReadwriteSplittingDataSourceRule result = 
mock(ReadwriteSplittingDataSourceRule.class, RETURNS_DEEP_STUBS);
+        
when(result.getReadwriteSplittingGroup().getReadDataSources()).thenReturn(Arrays.asList("read_ds_0",
 "read_ds_1"));
+        
when(result.getDisabledDataSourceNames()).thenReturn(Collections.singleton("read_ds_1"));
+        return result;
     }
 }
diff --git 
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
 
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
index dabc5ce5c0f..d50b05d001c 100644
--- 
a/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
+++ 
b/features/readwrite-splitting/distsql/statement/src/main/java/org/apache/shardingsphere/readwritesplitting/distsql/statement/ShowStatusFromReadwriteSplittingRulesStatement.java
@@ -17,7 +17,6 @@
 
 package org.apache.shardingsphere.readwritesplitting.distsql.statement;
 
-import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import 
org.apache.shardingsphere.distsql.statement.rql.resource.ResourceQueryStatement;
 import 
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.DatabaseSegment;
@@ -29,16 +28,23 @@ import java.util.Optional;
  * Show status from readwrite-splitting rules statement.
  */
 @RequiredArgsConstructor
-@Getter
 public final class ShowStatusFromReadwriteSplittingRulesStatement extends 
ResourceQueryStatement implements FromDatabaseAvailable {
     
     private final DatabaseSegment database;
     
-    private final String groupName;
+    private final String ruleName;
     
     @Override
     public Optional<DatabaseSegment> getDatabase() {
         return Optional.ofNullable(database);
     }
     
+    /**
+     * Get rule name.
+     *
+     * @return rule name.
+     */
+    public Optional<String> getRuleName() {
+        return Optional.ofNullable(ruleName);
+    }
 }
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyType.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyType.java
index 669b4f1e2ea..288fc82fa2a 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyType.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/enums/ShardingStrategyType.java
@@ -183,12 +183,12 @@ public enum ShardingStrategyType {
     }
     
     /**
-     * Determine whether contains type.
+     * Judge whether the input strategy type is valid.
      *
      * @param type type
-     * @return contains or not
+     * @return true or false
      */
-    public static boolean contains(final String type) {
+    public static boolean isValidType(final String type) {
         return Arrays.stream(values()).map(Enum::name).anyMatch(each -> 
each.equalsIgnoreCase(type));
     }
 }
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyExecutor.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyExecutor.java
index 6172318adb0..77152bd9abc 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyExecutor.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/AlterDefaultShardingStrategyExecutor.java
@@ -58,7 +58,7 @@ public final class AlterDefaultShardingStrategyExecutor 
implements DatabaseRuleA
     }
     
     private void checkAlgorithm(final AlterDefaultShardingStrategyStatement 
sqlStatement) {
-        
ShardingSpherePreconditions.checkState(ShardingStrategyType.contains(sqlStatement.getStrategyType()),
 () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
+        
ShardingSpherePreconditions.checkState(ShardingStrategyType.isValidType(sqlStatement.getStrategyType()),
 () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
         
ShardingSpherePreconditions.checkState(ShardingStrategyType.getValueOf(sqlStatement.getStrategyType()).isValid(sqlStatement.getShardingColumn()),
                 () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
         
ShardingSpherePreconditions.checkState(isAlgorithmDefinitionExists(sqlStatement),
 MissingRequiredAlgorithmException::new);
diff --git 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyExecutor.java
 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyExecutor.java
index d5b89e678f1..84e0bc9f71d 100644
--- 
a/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyExecutor.java
+++ 
b/features/sharding/distsql/handler/src/main/java/org/apache/shardingsphere/sharding/distsql/handler/update/CreateDefaultShardingStrategyExecutor.java
@@ -58,7 +58,7 @@ public final class CreateDefaultShardingStrategyExecutor 
implements DatabaseRule
     }
     
     private void checkAlgorithm(final CreateDefaultShardingStrategyStatement 
sqlStatement) {
-        
ShardingSpherePreconditions.checkState(ShardingStrategyType.contains(sqlStatement.getStrategyType()),
 () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
+        
ShardingSpherePreconditions.checkState(ShardingStrategyType.isValidType(sqlStatement.getStrategyType()),
 () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
         
ShardingSpherePreconditions.checkState(ShardingStrategyType.getValueOf(sqlStatement.getStrategyType())
                 .isValid(sqlStatement.getShardingColumn()), () -> new 
InvalidAlgorithmConfigurationException(sqlStatement.getStrategyType()));
         
ShardingSpherePreconditions.checkNotNull(sqlStatement.getAlgorithmSegment(), 
MissingRequiredAlgorithmException::new);
diff --git 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/CollectionUtils.java
 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/CollectionUtils.java
index 3b4ca5ef7ce..ae0701804bc 100644
--- 
a/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/CollectionUtils.java
+++ 
b/infra/distsql-handler/src/main/java/org/apache/shardingsphere/distsql/handler/util/CollectionUtils.java
@@ -29,11 +29,11 @@ import java.util.Collection;
 public final class CollectionUtils {
     
     /**
-     * Get database name.
+     * Judge whether the collection contains the specified element 
(case-insensitive).
      * 
      * @param collection collection
      * @param element element
-     * @return true if the collection contains the specified element 
(case-insensitive)
+     * @return true if the collection contains the specified element
      */
     public static boolean containsIgnoreCase(final Collection<String> 
collection, final String element) {
         return collection.stream().anyMatch(each -> 
each.equalsIgnoreCase(element));

Reply via email to