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