This is an automated email from the ASF dual-hosted git repository.
zhaojinchao 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 83ed6e3ca14 Remove toLowerCase and use CaseInsensitiveMap,
CaseInsensitiveSet (#30383)
83ed6e3ca14 is described below
commit 83ed6e3ca14f97cdf82d018609e5688ff02f9422
Author: Zhengqiang Duan <[email protected]>
AuthorDate: Mon Mar 4 14:38:44 2024 +0800
Remove toLowerCase and use CaseInsensitiveMap, CaseInsensitiveSet (#30383)
---
.../sqlfederation/resultset/SQLFederationResultSet.java | 12 ++++++------
.../executor/enumerable/EnumerableScanExecutor.java | 12 ++++++------
.../sqlfederation/optimizer/context/OptimizerContext.java | 12 ++++++------
.../optimizer/context/planner/OptimizerPlannerContext.java | 4 ++--
.../context/planner/OptimizerPlannerContextFactory.java | 9 ++++-----
.../optimizer/metadata/schema/SQLFederationDatabase.java | 4 ++--
.../optimizer/metadata/schema/SQLFederationSchema.java | 8 ++++----
.../planner/rule/transformation/PushFilterIntoScanRule.java | 6 +++---
.../planner/rule/transformation/PushProjectIntoScanRule.java | 6 +++---
.../optimizer/context/OptimizerContextTest.java | 4 ++--
10 files changed, 38 insertions(+), 39 deletions(-)
diff --git
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
index f37833a49f6..5150215b8a7 100644
---
a/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
+++
b/kernel/sql-federation/core/src/main/java/org/apache/shardingsphere/sqlfederation/resultset/SQLFederationResultSet.java
@@ -17,14 +17,15 @@
package org.apache.shardingsphere.sqlfederation.resultset;
+import com.cedarsoftware.util.CaseInsensitiveMap;
import org.apache.calcite.linq4j.Enumerator;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.schema.Schema;
import
org.apache.shardingsphere.infra.binder.context.segment.select.projection.Projection;
import
org.apache.shardingsphere.infra.binder.context.statement.dml.SelectStatementContext;
+import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import
org.apache.shardingsphere.infra.executor.sql.execute.result.query.impl.driver.jdbc.type.util.ResultSetUtils;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions;
import java.io.InputStream;
import java.io.Reader;
@@ -45,7 +46,6 @@ import java.sql.Timestamp;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
@@ -78,8 +78,8 @@ public final class SQLFederationResultSet extends
AbstractUnsupportedOperationRe
public SQLFederationResultSet(final Enumerator<Object> enumerator, final
ShardingSphereSchema schema, final Schema sqlFederationSchema,
final SelectStatementContext
selectStatementContext, final RelDataType resultColumnType) {
this.enumerator = enumerator;
- columnLabelAndIndexes = new
HashMap<>(selectStatementContext.getProjectionsContext().getExpandProjections().size(),
1F);
- Map<Integer, String> indexAndColumnLabels = new
HashMap<>(selectStatementContext.getProjectionsContext().getExpandProjections().size(),
1F);
+ columnLabelAndIndexes = new
CaseInsensitiveMap<>(selectStatementContext.getProjectionsContext().getExpandProjections().size(),
1F);
+ Map<Integer, String> indexAndColumnLabels = new
CaseInsensitiveMap<>(selectStatementContext.getProjectionsContext().getExpandProjections().size(),
1F);
handleColumnLabelAndIndex(columnLabelAndIndexes, indexAndColumnLabels,
selectStatementContext);
resultSetMetaData = new SQLFederationResultSetMetaData(schema,
sqlFederationSchema, selectStatementContext, resultColumnType,
indexAndColumnLabels);
}
@@ -89,7 +89,7 @@ public final class SQLFederationResultSet extends
AbstractUnsupportedOperationRe
for (int columnIndex = 1; columnIndex <= projections.size();
columnIndex++) {
Projection projection = projections.get(columnIndex - 1);
String columnLabel = projection.getColumnLabel();
- columnLabelAndIndexes.put(columnLabel.toLowerCase(), columnIndex);
+ columnLabelAndIndexes.put(columnLabel, columnIndex);
indexAndColumnLabels.put(columnIndex, columnLabel);
}
}
@@ -455,7 +455,7 @@ public final class SQLFederationResultSet extends
AbstractUnsupportedOperationRe
}
private Integer getIndexFromColumnLabelAndIndexMap(final String
columnLabel) throws SQLException {
- Integer result = columnLabelAndIndexes.get(columnLabel.toLowerCase());
+ Integer result = columnLabelAndIndexes.get(columnLabel);
ShardingSpherePreconditions.checkNotNull(result, () -> new
SQLFeatureNotSupportedException(String.format("can not get index from column
label `%s`", columnLabel)));
return result;
}
diff --git
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
index 01fd2362172..0e06541e85c 100644
---
a/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
+++
b/kernel/sql-federation/executor/src/main/java/org/apache/shardingsphere/sqlfederation/executor/enumerable/EnumerableScanExecutor.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sqlfederation.executor.enumerable;
+import com.cedarsoftware.util.CaseInsensitiveSet;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
import org.apache.calcite.linq4j.AbstractEnumerable;
@@ -76,7 +77,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
@@ -90,7 +90,7 @@ import java.util.stream.Collectors;
@RequiredArgsConstructor
public final class EnumerableScanExecutor implements ScanExecutor {
- private static final Collection<String> SYSTEM_CATALOG_TABLES = new
HashSet<>(3, 1F);
+ private static final Collection<String> SYSTEM_CATALOG_TABLES = new
CaseInsensitiveSet<>(3, 1F);
private static final String DAT_COMPATIBILITY = "PG";
@@ -124,8 +124,8 @@ public final class EnumerableScanExecutor implements
ScanExecutor {
@Override
public Enumerable<Object> execute(final ShardingSphereTable table, final
ScanExecutorContext scanContext) {
- String databaseName = executorContext.getDatabaseName().toLowerCase();
- String schemaName = executorContext.getSchemaName().toLowerCase();
+ String databaseName = executorContext.getDatabaseName();
+ String schemaName = executorContext.getSchemaName();
DatabaseType databaseType =
optimizerContext.getParserContext(databaseName).getDatabaseType();
if (new
SystemDatabase(databaseType).getSystemSchemas().contains(schemaName)) {
return executeByShardingSphereData(databaseName, schemaName,
table, databaseType);
@@ -156,7 +156,7 @@ public final class EnumerableScanExecutor implements
ScanExecutor {
ExecutionGroupContext<JDBCExecutionUnit> executionGroupContext
= prepareEngine.prepare(context.getRouteContext(),
executorContext.getConnectionOffsets(), context.getExecutionUnits(),
new
ExecutionGroupReportContext(executorContext.getFederationContext().getProcessId(),
database.getName(), new Grantee("", "")));
setParameters(executionGroupContext.getInputGroups());
- processEngine.executeSQL(executionGroupContext,
context.getQueryContext());
+ processEngine.executeSQL(executionGroupContext,
executorContext.getFederationContext().getQueryContext());
List<QueryResult> queryResults =
jdbcExecutor.execute(executionGroupContext,
callback).stream().map(QueryResult.class::cast).collect(Collectors.toList());
MergeEngine mergeEngine = new MergeEngine(database,
executorContext.getProps(), new ConnectionContext());
MergedResult mergedResult = mergeEngine.merge(queryResults,
queryContext.getSqlStatementContext());
@@ -179,7 +179,7 @@ public final class EnumerableScanExecutor implements
ScanExecutor {
private Enumerable<Object> executeByShardingSphereData(final String
databaseName, final String schemaName, final ShardingSphereTable table, final
DatabaseType databaseType) {
// TODO move this logic to ShardingSphere statistics
- if (databaseType instanceof OpenGaussDatabaseType &&
SYSTEM_CATALOG_TABLES.contains(table.getName().toLowerCase())) {
+ if (databaseType instanceof OpenGaussDatabaseType &&
SYSTEM_CATALOG_TABLES.contains(table.getName())) {
return createMemoryEnumerator(createSystemCatalogTableData(table));
}
Optional<ShardingSphereTableData> tableData =
Optional.ofNullable(statistics.getDatabaseData().get(databaseName)).map(optional
-> optional.getSchemaData().get(schemaName))
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContext.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContext.java
index ba38c065139..b4f9da4ff87 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContext.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContext.java
@@ -45,7 +45,7 @@ public final class OptimizerContext {
* @return parser context
*/
public OptimizerParserContext getParserContext(final String databaseName) {
- return parserContexts.get(databaseName.toLowerCase());
+ return parserContexts.get(databaseName);
}
/**
@@ -55,7 +55,7 @@ public final class OptimizerContext {
* @param parserContext parser context
*/
public void putParserContext(final String databaseName, final
OptimizerParserContext parserContext) {
- parserContexts.put(databaseName.toLowerCase(), parserContext);
+ parserContexts.put(databaseName, parserContext);
}
/**
@@ -64,7 +64,7 @@ public final class OptimizerContext {
* @param databaseName database name
*/
public void removeParserContext(final String databaseName) {
- parserContexts.remove(databaseName.toLowerCase());
+ parserContexts.remove(databaseName);
}
/**
@@ -74,7 +74,7 @@ public final class OptimizerContext {
* @return Planner
*/
public OptimizerPlannerContext getPlannerContext(final String
databaseName) {
- return plannerContexts.get(databaseName.toLowerCase());
+ return plannerContexts.get(databaseName);
}
/**
@@ -84,7 +84,7 @@ public final class OptimizerContext {
* @param plannerContext planner context
*/
public void putPlannerContext(final String databaseName, final
OptimizerPlannerContext plannerContext) {
- plannerContexts.put(databaseName.toLowerCase(), plannerContext);
+ plannerContexts.put(databaseName, plannerContext);
}
/**
@@ -93,6 +93,6 @@ public final class OptimizerContext {
* @param databaseName database name
*/
public void removePlannerContext(final String databaseName) {
- plannerContexts.remove(databaseName.toLowerCase());
+ plannerContexts.remove(databaseName);
}
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContext.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContext.java
index a2b8bbcfd2b..bc92a253538 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContext.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContext.java
@@ -40,7 +40,7 @@ public final class OptimizerPlannerContext {
* @return validator
*/
public SqlValidator getValidator(final String schemaName) {
- return validators.get(schemaName.toLowerCase());
+ return validators.get(schemaName);
}
/**
@@ -50,6 +50,6 @@ public final class OptimizerPlannerContext {
* @return converter
*/
public SqlToRelConverter getConverter(final String schemaName) {
- return converters.get(schemaName.toLowerCase());
+ return converters.get(schemaName);
}
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContextFactory.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContextFactory.java
index 864ba0c1acf..6d7ffaa7879 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContextFactory.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/context/planner/OptimizerPlannerContextFactory.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sqlfederation.optimizer.context.planner;
+import com.cedarsoftware.util.CaseInsensitiveMap;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.apache.calcite.adapter.java.JavaTypeFactory;
@@ -34,10 +35,8 @@ import
org.apache.shardingsphere.sqlfederation.optimizer.context.parser.Optimize
import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema.SQLFederationSchema;
import
org.apache.shardingsphere.sqlfederation.optimizer.planner.util.SQLFederationPlannerUtils;
-import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.concurrent.ConcurrentHashMap;
/**
* Optimizer planner context factory.
@@ -57,7 +56,7 @@ public final class OptimizerPlannerContextFactory {
*/
public static Map<String, OptimizerPlannerContext> create(final
Map<String, ShardingSphereDatabase> databases, final Map<String,
OptimizerParserContext> parserContexts,
final
SQLParserRule sqlParserRule) {
- Map<String, OptimizerPlannerContext> result = new
ConcurrentHashMap<>(databases.size(), 1F);
+ Map<String, OptimizerPlannerContext> result = new
CaseInsensitiveMap<>(databases.size(), 1F);
for (Entry<String, ShardingSphereDatabase> entry :
databases.entrySet()) {
result.put(entry.getKey(), create(entry.getValue(),
parserContexts.get(entry.getKey()), sqlParserRule));
}
@@ -73,8 +72,8 @@ public final class OptimizerPlannerContextFactory {
* @return created optimizer planner context
*/
public static OptimizerPlannerContext create(final ShardingSphereDatabase
database, final OptimizerParserContext parserContext, final SQLParserRule
sqlParserRule) {
- Map<String, SqlValidator> validators = new LinkedHashMap<>();
- Map<String, SqlToRelConverter> converters = new LinkedHashMap<>();
+ Map<String, SqlValidator> validators = new CaseInsensitiveMap<>();
+ Map<String, SqlToRelConverter> converters = new CaseInsensitiveMap<>();
for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
CalciteConnectionConfig connectionConfig = new
CalciteConnectionConfigImpl(parserContext.getDialectProps());
Schema sqlFederationSchema = new
SQLFederationSchema(entry.getKey(), entry.getValue(),
database.getProtocolType(), DEFAULT_DATA_TYPE_FACTORY);
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
index 342e826639d..19402eed7fe 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationDatabase.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
+import com.cedarsoftware.util.CaseInsensitiveMap;
import lombok.Getter;
import org.apache.calcite.adapter.java.JavaTypeFactory;
import org.apache.calcite.schema.Schema;
@@ -25,7 +26,6 @@ import
org.apache.shardingsphere.infra.database.core.type.DatabaseType;
import
org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase;
import
org.apache.shardingsphere.infra.metadata.database.schema.model.ShardingSphereSchema;
-import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
@@ -45,7 +45,7 @@ public final class SQLFederationDatabase extends
AbstractSchema {
}
private Map<String, Schema> createSubSchemaMap(final
ShardingSphereDatabase database, final DatabaseType protocolType, final
JavaTypeFactory javaTypeFactory) {
- Map<String, Schema> result = new
LinkedHashMap<>(database.getSchemas().size(), 1F);
+ Map<String, Schema> result = new
CaseInsensitiveMap<>(database.getSchemas().size(), 1F);
for (Entry<String, ShardingSphereSchema> entry :
database.getSchemas().entrySet()) {
result.put(entry.getKey(), new SQLFederationSchema(entry.getKey(),
entry.getValue(), protocolType, javaTypeFactory));
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
index 7104d37799f..abdbcfb60cf 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/metadata/schema/SQLFederationSchema.java
@@ -17,6 +17,7 @@
package org.apache.shardingsphere.sqlfederation.optimizer.metadata.schema;
+import com.cedarsoftware.util.CaseInsensitiveMap;
import lombok.Getter;
import org.apache.calcite.adapter.java.JavaTypeFactory;
import org.apache.calcite.rel.type.RelDataType;
@@ -32,7 +33,6 @@ import
org.apache.shardingsphere.sqlfederation.optimizer.metadata.util.SQLFedera
import
org.apache.shardingsphere.sqlfederation.optimizer.statistic.SQLFederationStatistic;
import java.util.Collections;
-import java.util.LinkedHashMap;
import java.util.Map;
/**
@@ -51,13 +51,13 @@ public final class SQLFederationSchema extends
AbstractSchema {
}
private Map<String, Table> createTableMap(final ShardingSphereSchema
schema, final DatabaseType protocolType, final JavaTypeFactory javaTypeFactory)
{
- Map<String, Table> result = new
LinkedHashMap<>(schema.getTables().size(), 1F);
+ Map<String, Table> result = new
CaseInsensitiveMap<>(schema.getTables().size(), 1F);
for (ShardingSphereTable each : schema.getTables().values()) {
if (schema.containsView(each.getName())) {
- result.put(each.getName().toLowerCase(), getViewTable(schema,
each, protocolType, javaTypeFactory));
+ result.put(each.getName(), getViewTable(schema, each,
protocolType, javaTypeFactory));
} else {
// TODO implement table statistic logic after using custom
operators
- result.put(each.getName().toLowerCase(), new
SQLFederationTable(each, new SQLFederationStatistic(), protocolType));
+ result.put(each.getName(), new SQLFederationTable(each, new
SQLFederationStatistic(), protocolType));
}
}
return result;
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
index 70959e3ded0..536275bd18a 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushFilterIntoScanRule.java
@@ -17,6 +17,7 @@
package
org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.transformation;
+import com.cedarsoftware.util.CaseInsensitiveSet;
import org.apache.calcite.plan.RelOptRuleCall;
import org.apache.calcite.plan.RelRule;
import org.apache.calcite.rel.logical.LogicalFilter;
@@ -28,7 +29,6 @@ import org.immutables.value.Value;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
/**
* Push filter into scan rule.
@@ -36,7 +36,7 @@ import java.util.HashSet;
@Value.Enclosing
public final class PushFilterIntoScanRule extends
RelRule<PushFilterIntoScanRule.Config> implements TransformationRule {
- private static final Collection<String> SYSTEM_SCHEMAS = new
HashSet<>(Arrays.asList("information_schema", "performance_schema", "mysql",
"sys", "shardingsphere", "pg_catalog"));
+ private static final Collection<String> SYSTEM_SCHEMAS = new
CaseInsensitiveSet<>(Arrays.asList("information_schema", "performance_schema",
"mysql", "sys", "shardingsphere", "pg_catalog"));
private static final String CORRELATE_REFERENCE = "$cor";
@@ -48,7 +48,7 @@ public final class PushFilterIntoScanRule extends
RelRule<PushFilterIntoScanRule
public boolean matches(final RelOptRuleCall call) {
LogicalScan logicalScan = call.rel(1);
for (String each : logicalScan.getTable().getQualifiedName()) {
- if (SYSTEM_SCHEMAS.contains(each.toLowerCase())) {
+ if (SYSTEM_SCHEMAS.contains(each)) {
return false;
}
}
diff --git
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
index 2bf1dd16cca..a93e7d4de28 100644
---
a/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
+++
b/kernel/sql-federation/optimizer/src/main/java/org/apache/shardingsphere/sqlfederation/optimizer/planner/rule/transformation/PushProjectIntoScanRule.java
@@ -17,6 +17,7 @@
package
org.apache.shardingsphere.sqlfederation.optimizer.planner.rule.transformation;
+import com.cedarsoftware.util.CaseInsensitiveSet;
import org.apache.calcite.plan.RelOptRuleCall;
import org.apache.calcite.plan.RelRule;
import org.apache.calcite.rel.logical.LogicalProject;
@@ -28,7 +29,6 @@ import org.immutables.value.Value;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
/**
* Push project into scan rule.
@@ -36,7 +36,7 @@ import java.util.HashSet;
@Value.Enclosing
public final class PushProjectIntoScanRule extends
RelRule<PushProjectIntoScanRule.Config> implements TransformationRule {
- private static final Collection<String> SYSTEM_SCHEMAS = new
HashSet<>(Arrays.asList("information_schema", "performance_schema", "mysql",
"sys", "shardingsphere", "pg_catalog"));
+ private static final Collection<String> SYSTEM_SCHEMAS = new
CaseInsensitiveSet<>(Arrays.asList("information_schema", "performance_schema",
"mysql", "sys", "shardingsphere", "pg_catalog"));
private static final String CASE_FUNCTION_NAME = "CAST";
@@ -48,7 +48,7 @@ public final class PushProjectIntoScanRule extends
RelRule<PushProjectIntoScanRu
public boolean matches(final RelOptRuleCall call) {
LogicalScan logicalScan = call.rel(1);
for (String each : logicalScan.getTable().getQualifiedName()) {
- if (SYSTEM_SCHEMAS.contains(each.toLowerCase())) {
+ if (SYSTEM_SCHEMAS.contains(each)) {
return false;
}
}
diff --git
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContextTest.java
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContextTest.java
index 796e072741e..d1a20a05d5d 100644
---
a/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContextTest.java
+++
b/kernel/sql-federation/optimizer/src/test/java/org/apache/shardingsphere/sqlfederation/optimizer/context/OptimizerContextTest.java
@@ -46,13 +46,13 @@ class OptimizerContextTest {
@Test
void assertGetParserContext() {
OptimizerContext actual =
OptimizerContextFactory.create(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
createShardingSphereDatabase()), mock(ConfigurationProperties.class));
-
assertThat(actual.getParserContext(DefaultDatabase.LOGIC_NAME.toLowerCase()),
instanceOf(OptimizerParserContext.class));
+ assertThat(actual.getParserContext(DefaultDatabase.LOGIC_NAME),
instanceOf(OptimizerParserContext.class));
}
@Test
void assertGetPlannerContext() {
OptimizerContext actual =
OptimizerContextFactory.create(Collections.singletonMap(DefaultDatabase.LOGIC_NAME,
createShardingSphereDatabase()), mock(ConfigurationProperties.class));
-
assertThat(actual.getPlannerContext(DefaultDatabase.LOGIC_NAME.toLowerCase()),
instanceOf(OptimizerPlannerContext.class));
+ assertThat(actual.getPlannerContext(DefaultDatabase.LOGIC_NAME),
instanceOf(OptimizerPlannerContext.class));
}
private ShardingSphereDatabase createShardingSphereDatabase() {