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 466f083 Replace java.util.stream with for each in high frequency
codes (#13845)
466f083 is described below
commit 466f083dac457866befc7ef77deef72c316c8f38
Author: 吴伟杰 <[email protected]>
AuthorDate: Wed Dec 1 14:10:40 2021 +0800
Replace java.util.stream with for each in high frequency codes (#13845)
* Replace stream with for loop
* Rename variables
* Changes for code style
* Avoid using ArrayList without size
* Avoid using ArrayList without size and rename
---
.../route/engine/condition/ShardingConditions.java | 8 +++-
.../impl/WhereClauseShardingConditionEngine.java | 14 ++++--
.../engine/type/ShardingRouteEngineFactory.java | 9 +++-
.../type/unicast/ShardingUnicastRoutingEngine.java | 5 +-
.../shardingsphere/sharding/rule/ShardingRule.java | 25 ++++++++--
.../pagination/engine/PaginationContextEngine.java | 6 ++-
.../infra/binder/segment/table/TablesContext.java | 53 ++++++++++++++++------
.../statement/dml/SelectStatementContext.java | 9 ++--
.../sql/context/ExecutionContextBuilder.java | 7 ++-
.../infra/rewrite/SQLRewriteEntry.java | 5 +-
.../driver/executor/DriverJDBCExecutor.java | 9 +++-
.../batch/BatchPreparedStatementExecutor.java | 25 ++++++++--
.../statement/ShardingSpherePreparedStatement.java | 16 +++++--
.../singletable/route/SingleTableSQLRouter.java | 19 ++++++--
.../singletable/rule/SingleTableRule.java | 8 +++-
.../spi/ShardingSphereServiceLoader.java | 15 +++++-
16 files changed, 182 insertions(+), 51 deletions(-)
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/ShardingConditions.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/ShardingConditions.java
index 6118968..d958b59 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/ShardingConditions.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/ShardingConditions.java
@@ -138,12 +138,16 @@ public final class ShardingConditions {
Collection<SelectStatement> result = new LinkedList<>();
if (sqlStatementContext instanceof SelectStatementContext) {
result.add(((SelectStatementContext)
sqlStatementContext).getSqlStatement());
- result.addAll(((SelectStatementContext)
sqlStatementContext).getSubqueryContexts().values().stream().map(SelectStatementContext::getSqlStatement).collect(Collectors.toList()));
+ for (SelectStatementContext each : ((SelectStatementContext)
sqlStatementContext).getSubqueryContexts().values()) {
+ result.add(each.getSqlStatement());
+ }
}
if (sqlStatementContext instanceof InsertStatementContext && null !=
((InsertStatementContext) sqlStatementContext).getInsertSelectContext()) {
SelectStatementContext selectStatementContext =
((InsertStatementContext)
sqlStatementContext).getInsertSelectContext().getSelectStatementContext();
result.add(selectStatementContext.getSqlStatement());
-
result.addAll(selectStatementContext.getSubqueryContexts().values().stream().map(SelectStatementContext::getSqlStatement).collect(Collectors.toList()));
+ for (SelectStatementContext each :
selectStatementContext.getSubqueryContexts().values()) {
+ result.add(each.getSqlStatement());
+ }
}
return result;
}
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
index 61dbe0c..2b928fd 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/condition/engine/impl/WhereClauseShardingConditionEngine.java
@@ -53,7 +53,6 @@ import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Sharding condition engine for where clause.
@@ -95,9 +94,16 @@ public final class WhereClauseShardingConditionEngine
implements ShardingConditi
}
private Map<String, String> getColumnTableNames(final
SQLStatementContext<?> sqlStatementContext, final Collection<AndPredicate>
andPredicates) {
- Collection<ColumnProjection> columns =
andPredicates.stream().flatMap(each -> each.getPredicates().stream())
- .flatMap(each ->
ColumnExtractor.extract(each).stream().map(this::buildColumnProjection)).collect(Collectors.toList());
- return sqlStatementContext.getTablesContext().findTableName(columns,
schema);
+ Collection<ColumnProjection> result = new LinkedList<>();
+ for (AndPredicate each : andPredicates) {
+ for (ExpressionSegment expressionSegment : each.getPredicates()) {
+ for (ColumnSegment columnSegment :
ColumnExtractor.extract(expressionSegment)) {
+ ColumnProjection columnProjection =
buildColumnProjection(columnSegment);
+ result.add(columnProjection);
+ }
+ }
+ }
+ return sqlStatementContext.getTablesContext().findTableName(result,
schema);
}
private ColumnProjection buildColumnProjection(final ColumnSegment
segment) {
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
index 45d93d8..917df12 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/ShardingRouteEngineFactory.java
@@ -25,6 +25,7 @@ import
org.apache.shardingsphere.infra.binder.type.TableAvailable;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationProperties;
import
org.apache.shardingsphere.infra.config.properties.ConfigurationPropertyKey;
import org.apache.shardingsphere.infra.metadata.ShardingSphereMetaData;
+import
org.apache.shardingsphere.sharding.route.engine.condition.ShardingCondition;
import
org.apache.shardingsphere.sharding.route.engine.condition.ShardingConditions;
import
org.apache.shardingsphere.sharding.route.engine.condition.value.ShardingConditionValue;
import
org.apache.shardingsphere.sharding.route.engine.type.broadcast.ShardingDataSourceGroupBroadcastRoutingEngine;
@@ -203,8 +204,12 @@ public final class ShardingRouteEngineFactory {
}
private static String getLogicTableName(final ShardingConditions
shardingConditions, final Collection<String> tableNames) {
- return shardingConditions.getConditions().stream().flatMap(each ->
each.getValues().stream())
-
.map(ShardingConditionValue::getTableName).findFirst().orElseGet(() ->
tableNames.iterator().next());
+ for (ShardingCondition each : shardingConditions.getConditions()) {
+ for (ShardingConditionValue shardingConditionValue :
each.getValues()) {
+ return shardingConditionValue.getTableName();
+ }
+ }
+ return tableNames.iterator().next();
}
private static boolean isShardingStandardQuery(final Collection<String>
tableNames, final ShardingRule shardingRule) {
diff --git
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unicast/ShardingUnicastRoutingEngine.java
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unicast/ShardingUnicastRoutingEngine.java
index 8b78067..7df32c0 100644
---
a/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unicast/ShardingUnicastRoutingEngine.java
+++
b/shardingsphere-features/shardingsphere-sharding/shardingsphere-sharding-core/src/main/java/org/apache/shardingsphere/sharding/route/engine/type/unicast/ShardingUnicastRoutingEngine.java
@@ -51,7 +51,10 @@ public final class ShardingUnicastRoutingEngine implements
ShardingRouteEngine {
String dataSourceName =
getRandomDataSourceName(shardingRule.getDataSourceNames());
RouteMapper dataSourceMapper = new RouteMapper(dataSourceName,
dataSourceName);
if (shardingRule.isAllBroadcastTables(logicTables)) {
- List<RouteMapper> tableMappers = logicTables.stream().map(each ->
new RouteMapper(each, each)).collect(Collectors.toCollection(() -> new
ArrayList<>(logicTables.size())));
+ List<RouteMapper> tableMappers = new
ArrayList<>(logicTables.size());
+ for (String each : logicTables) {
+ tableMappers.add(new RouteMapper(each, each));
+ }
result.getRouteUnits().add(new RouteUnit(dataSourceMapper,
tableMappers));
} else if (logicTables.isEmpty()) {
result.getRouteUnits().add(new RouteUnit(dataSourceMapper,
Collections.emptyList()));
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 548b200..7f8ec33 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
@@ -273,7 +273,12 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
* @return binding table rule
*/
public Optional<BindingTableRule> findBindingTableRule(final String
logicTableName) {
- return bindingTableRules.stream().filter(each ->
each.hasLogicTable(logicTableName)).findFirst();
+ for (BindingTableRule each : bindingTableRules) {
+ if (each.hasLogicTable(logicTableName)) {
+ return Optional.of(each);
+ }
+ }
+ return Optional.empty();
}
/**
@@ -293,7 +298,15 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
* @return whether logic table is all sharding table or not
*/
public boolean isAllShardingTables(final Collection<String>
logicTableNames) {
- return !logicTableNames.isEmpty() &&
logicTableNames.stream().allMatch(this::isShardingTable);
+ if (logicTableNames.isEmpty()) {
+ return false;
+ }
+ for (String each : logicTableNames) {
+ if (!isShardingTable(each)) {
+ return false;
+ }
+ }
+ return true;
}
/**
@@ -429,7 +442,13 @@ public final class ShardingRule implements SchemaRule,
DataNodeContainedRule, Ta
* @return sharding logic table names
*/
public Collection<String> getShardingLogicTableNames(final
Collection<String> logicTableNames) {
- return
logicTableNames.stream().filter(this::isShardingTable).collect(Collectors.toCollection(LinkedList::new));
+ Collection<String> result = new LinkedList<>();
+ for (String each : logicTableNames) {
+ if (isShardingTable(each)) {
+ result.add(each);
+ }
+ }
+ return result;
}
/**
diff --git
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/PaginationContextEngine.java
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/PaginationContextEngine.java
index dbe12e0..6c58a58 100644
---
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/PaginationContextEngine.java
+++
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/select/pagination/engine/PaginationContextEngine.java
@@ -36,7 +36,6 @@ import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Pagination context engine.
@@ -57,7 +56,10 @@ public final class PaginationContextEngine {
return new
LimitPaginationContextEngine().createPaginationContext(limitSegment.get(),
parameters);
}
Optional<TopProjectionSegment> topProjectionSegment =
findTopProjection(selectStatement);
- Collection<ExpressionSegment> expressions =
getWhereSegments(selectStatement).stream().map(WhereSegment::getExpr).collect(Collectors.toList());
+ Collection<ExpressionSegment> expressions = new LinkedList<>();
+ for (WhereSegment each : getWhereSegments(selectStatement)) {
+ expressions.add(each.getExpr());
+ }
if (topProjectionSegment.isPresent()) {
return new
TopPaginationContextEngine().createPaginationContext(topProjectionSegment.get(),
expressions, parameters);
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
index 97f8c52..2c2656d 100644
---
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
+++
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/segment/table/TablesContext.java
@@ -33,7 +33,10 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.TreeMap;
@@ -66,19 +69,29 @@ public final class TablesContext {
if (tableSegments.isEmpty()) {
return;
}
- Collection<SimpleTableSegment> simpleTableSegments =
tableSegments.stream().filter(each
- -> each instanceof SimpleTableSegment).map(each ->
(SimpleTableSegment) each).collect(Collectors.toList());
- for (SimpleTableSegment each : simpleTableSegments) {
- tables.add(each);
- tableNames.add(each.getTableName().getIdentifier().getValue());
- each.getOwner().ifPresent(optional ->
schemaNames.add(optional.getIdentifier().getValue()));
+ for (TableSegment each : tableSegments) {
+ if (!(each instanceof SimpleTableSegment)) {
+ continue;
+ }
+ SimpleTableSegment simpleTableSegment = (SimpleTableSegment) each;
+ tables.add(simpleTableSegment);
+
tableNames.add(simpleTableSegment.getTableName().getIdentifier().getValue());
+ simpleTableSegment.getOwner().ifPresent(owner ->
schemaNames.add(owner.getIdentifier().getValue()));
}
- Collection<SubqueryTableSegment> subqueryTableSegments =
tableSegments.stream().filter(each
- -> each instanceof SubqueryTableSegment).map(each ->
(SubqueryTableSegment) each).collect(Collectors.toList());
- for (SubqueryTableSegment each : subqueryTableSegments) {
- SelectStatementContext subqueryContext =
subqueryContexts.get(each.getSubquery().getStartIndex());
+ for (TableSegment each : tableSegments) {
+ if (!(each instanceof SubqueryTableSegment)) {
+ continue;
+ }
+ SubqueryTableSegment subqueryTableSegment = (SubqueryTableSegment)
each;
+ SelectStatementContext subqueryContext =
subqueryContexts.get(subqueryTableSegment.getSubquery().getStartIndex());
Collection<SubqueryTableContext> subqueryTableContexts = new
SubqueryTableContextEngine().createSubqueryTableContexts(subqueryContext,
each.getAlias().orElse(null));
-
subqueryTables.putAll(subqueryTableContexts.stream().filter(subQuery -> null !=
subQuery.getAlias()).collect(Collectors.groupingBy(SubqueryTableContext::getAlias)));
+ Map<String, List<SubqueryTableContext>> result = new HashMap<>();
+ for (SubqueryTableContext subQuery : subqueryTableContexts) {
+ if (null != subQuery.getAlias()) {
+ result.computeIfAbsent(subQuery.getAlias(), unused -> new
LinkedList<>()).add(subQuery);
+ }
+ }
+ subqueryTables.putAll(result);
}
}
@@ -101,11 +114,20 @@ public final class TablesContext {
public Map<String, String> findTableName(final
Collection<ColumnProjection> columns, final ShardingSphereSchema schema) {
if (1 == tables.size()) {
String tableName =
tables.iterator().next().getTableName().getIdentifier().getValue();
- return
columns.stream().collect(Collectors.toMap(ColumnProjection::getExpression, each
-> tableName, (oldValue, currentValue) -> oldValue));
+ Map<String, String> result = new LinkedHashMap<>(columns.size(),
1);
+ for (ColumnProjection each : columns) {
+ result.putIfAbsent(each.getExpression(), tableName);
+ }
+ return result;
}
Map<String, String> result = new HashMap<>(columns.size(), 1);
result.putAll(findTableNameFromSQL(getOwnerColumnNames(columns)));
- Collection<String> columnNames = columns.stream().filter(each -> null
== each.getOwner()).map(ColumnProjection::getName).collect(Collectors.toSet());
+ Collection<String> columnNames = new LinkedHashSet<>();
+ for (ColumnProjection each : columns) {
+ if (null == each.getOwner()) {
+ columnNames.add(each.getName());
+ }
+ }
result.putAll(findTableNameFromMetaData(columnNames, schema));
if (result.size() < columns.size() && !subqueryTables.isEmpty()) {
appendRemainingResult(columns, result);
@@ -185,6 +207,9 @@ public final class TablesContext {
*/
public Optional<String> getSchemaName() {
Preconditions.checkState(schemaNames.size() <= 1, "Can not support
multiple different schema.");
- return schemaNames.stream().findFirst();
+ for (String each : schemaNames) {
+ return Optional.of(each);
+ }
+ return Optional.empty();
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
index e31fd05..a896b48 100644
---
a/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
+++
b/shardingsphere-infra/shardingsphere-infra-binder/src/main/java/org/apache/shardingsphere/infra/binder/statement/dml/SelectStatementContext.java
@@ -255,11 +255,14 @@ public final class SelectStatementContext extends
CommonSQLStatementContext<Sele
}
private Collection<TableSegment> getAllTableSegments() {
- Collection<TableSegment> result = new LinkedList<>();
TableExtractor tableExtractor = new TableExtractor();
tableExtractor.extractTablesFromSelect(getSqlStatement());
- result.addAll(tableExtractor.getRewriteTables());
- result.addAll(tableExtractor.getTableContext().stream().filter(each ->
each instanceof SubqueryTableSegment).collect(Collectors.toList()));
+ Collection<TableSegment> result = new
LinkedList<>(tableExtractor.getRewriteTables());
+ for (TableSegment each : tableExtractor.getTableContext()) {
+ if (each instanceof SubqueryTableSegment) {
+ result.add(each);
+ }
+ }
return result;
}
}
diff --git
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/context/ExecutionContextBuilder.java
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/context/ExecutionContextBuilder.java
index d03ca30..eed159d 100644
---
a/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/context/ExecutionContextBuilder.java
+++
b/shardingsphere-infra/shardingsphere-infra-executor/src/main/java/org/apache/shardingsphere/infra/executor/sql/context/ExecutionContextBuilder.java
@@ -29,6 +29,7 @@ import
org.apache.shardingsphere.infra.rewrite.engine.result.SQLRewriteUnit;
import org.apache.shardingsphere.infra.route.context.RouteMapper;
import org.apache.shardingsphere.infra.route.context.RouteUnit;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedHashSet;
@@ -74,7 +75,11 @@ public final class ExecutionContextBuilder {
if (null == tableMappers) {
return Collections.emptyList();
}
- return tableMappers.stream().map(routeMapper -> new
RouteMapper(routeMapper.getLogicName(),
routeMapper.getActualName())).collect(Collectors.toList());
+ List<RouteMapper> result = new ArrayList<>(tableMappers.size());
+ for (RouteMapper each : tableMappers) {
+ result.add(new RouteMapper(each.getLogicName(),
each.getActualName()));
+ }
+ return result;
}
private static List<RouteMapper> getGenericTableRouteMappers(final
SQLStatementContext<?> sqlStatementContext) {
diff --git
a/shardingsphere-infra/shardingsphere-infra-rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
b/shardingsphere-infra/shardingsphere-infra-rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
index aaa0667..8a4e91e 100644
---
a/shardingsphere-infra/shardingsphere-infra-rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
+++
b/shardingsphere-infra/shardingsphere-infra-rewrite/src/main/java/org/apache/shardingsphere/infra/rewrite/SQLRewriteEntry.java
@@ -33,6 +33,7 @@ import
org.apache.shardingsphere.spi.ordered.OrderedSPIRegistry;
import java.util.Collection;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
/**
* SQL rewrite entry.
@@ -80,6 +81,8 @@ public final class SQLRewriteEntry {
@SuppressWarnings({"unchecked", "rawtypes"})
private void decorate(final Map<ShardingSphereRule,
SQLRewriteContextDecorator> decorators, final SQLRewriteContext
sqlRewriteContext, final RouteContext routeContext) {
- decorators.forEach((key, value) -> value.decorate(key, props,
sqlRewriteContext, routeContext));
+ for (Entry<ShardingSphereRule, SQLRewriteContextDecorator> entry :
decorators.entrySet()) {
+ entry.getValue().decorate(entry.getKey(), props,
sqlRewriteContext, routeContext);
+ }
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
index 5d03ae8..f2c25ec 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/DriverJDBCExecutor.java
@@ -35,9 +35,9 @@ import
org.apache.shardingsphere.mode.metadata.MetaDataContexts;
import org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.SQLException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.stream.Collectors;
/**
* Driver JDBC executor.
@@ -145,6 +145,11 @@ public final class DriverJDBCExecutor {
}
private void refreshMetaData(final SQLStatement sqlStatement, final
Collection<RouteUnit> routeUnits) throws SQLException {
- metadataRefreshEngine.refresh(sqlStatement,
routeUnits.stream().map(each ->
each.getDataSourceMapper().getLogicName()).collect(Collectors.toList()));
+ List<String> result = new ArrayList<>(routeUnits.size());
+ for (RouteUnit each : routeUnits) {
+ String logicName = each.getDataSourceMapper().getLogicName();
+ result.add(logicName);
+ }
+ metadataRefreshEngine.refresh(sqlStatement, result);
}
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
index 7a5fce7..3704221 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/executor/batch/BatchPreparedStatementExecutor.java
@@ -35,6 +35,7 @@ import
org.apache.shardingsphere.sql.parser.sql.common.statement.SQLStatement;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
@@ -92,7 +93,12 @@ public final class BatchPreparedStatementExecutor {
}
private Collection<BatchExecutionUnit> createBatchExecutionUnits(final
Collection<ExecutionUnit> executionUnits) {
- return
executionUnits.stream().map(BatchExecutionUnit::new).collect(Collectors.toList());
+ List<BatchExecutionUnit> result = new
ArrayList<>(executionUnits.size());
+ for (ExecutionUnit executionUnit : executionUnits) {
+ BatchExecutionUnit batchExecutionUnit = new
BatchExecutionUnit(executionUnit);
+ result.add(batchExecutionUnit);
+ }
+ return result;
}
private void handleOldBatchExecutionUnits(final
Collection<BatchExecutionUnit> newExecutionUnits) {
@@ -100,7 +106,11 @@ public final class BatchPreparedStatementExecutor {
}
private void reviseBatchExecutionUnits(final BatchExecutionUnit
batchExecutionUnit) {
- batchExecutionUnits.stream().filter(each ->
each.equals(batchExecutionUnit)).forEach(each -> reviseBatchExecutionUnit(each,
batchExecutionUnit));
+ for (BatchExecutionUnit each : batchExecutionUnits) {
+ if (each.equals(batchExecutionUnit)) {
+ reviseBatchExecutionUnit(each, batchExecutionUnit);
+ }
+ }
}
private void reviseBatchExecutionUnit(final BatchExecutionUnit
oldBatchExecutionUnit, final BatchExecutionUnit newBatchExecutionUnit) {
@@ -110,7 +120,9 @@ public final class BatchPreparedStatementExecutor {
private void handleNewBatchExecutionUnits(final
Collection<BatchExecutionUnit> newExecutionUnits) {
newExecutionUnits.removeAll(batchExecutionUnits);
- newExecutionUnits.forEach(each -> each.mapAddBatchCount(batchCount));
+ for (BatchExecutionUnit each : newExecutionUnits) {
+ each.mapAddBatchCount(batchCount);
+ }
batchExecutionUnits.addAll(newExecutionUnits);
}
@@ -184,8 +196,11 @@ public final class BatchPreparedStatementExecutor {
*/
public List<Statement> getStatements() {
List<Statement> result = new LinkedList<>();
- for (ExecutionGroup<JDBCExecutionUnit> each :
executionGroupContext.getInputGroups()) {
-
result.addAll(each.getInputs().stream().map(JDBCExecutionUnit::getStorageResource).collect(Collectors.toList()));
+ for (ExecutionGroup<JDBCExecutionUnit> eachGroup :
executionGroupContext.getInputGroups()) {
+ for (JDBCExecutionUnit eachUnit : eachGroup.getInputs()) {
+ Statement storageResource = eachUnit.getStorageResource();
+ result.add(storageResource);
+ }
}
return result;
}
diff --git
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
index 0ee626a..bc00d9d 100644
---
a/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
+++
b/shardingsphere-jdbc/shardingsphere-jdbc-core/src/main/java/org/apache/shardingsphere/driver/jdbc/core/statement/ShardingSpherePreparedStatement.java
@@ -45,6 +45,7 @@ import
org.apache.shardingsphere.infra.executor.check.SQLCheckEngine;
import org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroup;
import
org.apache.shardingsphere.infra.executor.kernel.model.ExecutionGroupContext;
import org.apache.shardingsphere.infra.executor.sql.context.ExecutionContext;
+import org.apache.shardingsphere.infra.executor.sql.context.ExecutionUnit;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.ConnectionMode;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.SQLExecutorExceptionHandler;
import
org.apache.shardingsphere.infra.executor.sql.execute.engine.driver.jdbc.JDBCExecutionUnit;
@@ -196,7 +197,12 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
if (executionContext.getRouteContext().isFederated()) {
return
Collections.singletonList(executor.getFederationExecutor().getResultSet());
}
- return
statements.stream().map(this::getResultSet).collect(Collectors.toList());
+ List<ResultSet> result = new ArrayList<>(statements.size());
+ for (PreparedStatement each : statements) {
+ ResultSet resultSet = getResultSet(each);
+ result.add(resultSet);
+ }
+ return result;
}
private List<QueryResult> executeQuery0() throws SQLException {
@@ -467,8 +473,12 @@ public final class ShardingSpherePreparedStatement extends
AbstractPreparedState
DriverExecutionPrepareEngine<JDBCExecutionUnit, Connection>
prepareEngine = new DriverExecutionPrepareEngine<>(
JDBCDriverType.PREPARED_STATEMENT,
metaDataContexts.getProps().<Integer>getValue(ConfigurationPropertyKey.MAX_CONNECTIONS_SIZE_PER_QUERY),
connection.getConnectionManager(), statementOption,
metaDataContexts.getMetaData(connection.getSchema()).getRuleMetaData().getRules());
-
batchPreparedStatementExecutor.init(prepareEngine.prepare(executionContext.getRouteContext(),
- new
ArrayList<>(batchPreparedStatementExecutor.getBatchExecutionUnits()).stream().map(BatchExecutionUnit::getExecutionUnit).collect(Collectors.toList())));
+ List<ExecutionUnit> executionUnits = new
ArrayList<>(batchPreparedStatementExecutor.getBatchExecutionUnits().size());
+ for (BatchExecutionUnit each :
batchPreparedStatementExecutor.getBatchExecutionUnits()) {
+ ExecutionUnit executionUnit = each.getExecutionUnit();
+ executionUnits.add(executionUnit);
+ }
+
batchPreparedStatementExecutor.init(prepareEngine.prepare(executionContext.getRouteContext(),
executionUnits));
setBatchParametersForStatements();
}
diff --git
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
index 9b387d9..48295f0 100644
---
a/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
+++
b/shardingsphere-kernel/shardingsphere-single-table/shardingsphere-single-table-core/src/main/java/org/apache/shardingsphere/singletable/route/SingleTableSQLRouter.java
@@ -29,10 +29,11 @@ import org.apache.shardingsphere.infra.route.SQLRouter;
import org.apache.shardingsphere.infra.route.context.RouteContext;
import org.apache.shardingsphere.singletable.constant.SingleTableOrder;
import org.apache.shardingsphere.singletable.rule.SingleTableRule;
+import
org.apache.shardingsphere.sql.parser.sql.common.segment.generic.table.SimpleTableSegment;
import
org.apache.shardingsphere.sql.parser.sql.common.statement.ddl.CreateTableStatement;
import java.util.Collection;
-import java.util.stream.Collectors;
+import java.util.HashSet;
/**
* Single table SQL router.
@@ -56,10 +57,18 @@ public final class SingleTableSQLRouter implements
SQLRouter<SingleTableRule> {
}
private Collection<String> getSingleTableNames(final
SQLStatementContext<?> sqlStatementContext, final SingleTableRule rule, final
RouteContext routeContext) {
- Collection<String> tableNames = sqlStatementContext instanceof
TableAvailable
- ? ((TableAvailable)
sqlStatementContext).getAllTables().stream().map(each ->
each.getTableName().getIdentifier().getValue()).collect(Collectors.toSet())
- : sqlStatementContext.getTablesContext().getTableNames();
- return routeContext.getRouteUnits().isEmpty() &&
sqlStatementContext.getSqlStatement() instanceof CreateTableStatement ?
tableNames : rule.getSingleTableNames(tableNames);
+ Collection<String> result;
+ if (sqlStatementContext instanceof TableAvailable) {
+ Collection<SimpleTableSegment> allTables = ((TableAvailable)
sqlStatementContext).getAllTables();
+ result = new HashSet<>(allTables.size(), 1);
+ for (SimpleTableSegment each : allTables) {
+ String value = each.getTableName().getIdentifier().getValue();
+ result.add(value);
+ }
+ } else {
+ result = sqlStatementContext.getTablesContext().getTableNames();
+ }
+ return routeContext.getRouteUnits().isEmpty() &&
sqlStatementContext.getSqlStatement() instanceof CreateTableStatement ? result
: rule.getSingleTableNames(result);
}
private void validateSameDataSource(final SQLStatementContext<?>
sqlStatementContext, final SingleTableRule rule,
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 3de700f..81e3032 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
@@ -135,7 +135,13 @@ public final class SingleTableRule implements SchemaRule,
DataNodeContainedRule,
* @return sharding logic table names
*/
public Collection<String> getSingleTableNames(final Collection<String>
logicTableNames) {
- return logicTableNames.stream().filter(each ->
singleTableDataNodes.containsKey(each.toLowerCase())).collect(Collectors.toCollection(LinkedList::new));
+ Collection<String> result = new LinkedList<>();
+ for (String each : logicTableNames) {
+ if (singleTableDataNodes.containsKey(each.toLowerCase())) {
+ result.add(each);
+ }
+ }
+ return result;
}
@Override
diff --git
a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
index 68a2c4b..f828347 100644
---
a/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
+++
b/shardingsphere-spi/src/main/java/org/apache/shardingsphere/spi/ShardingSphereServiceLoader.java
@@ -21,13 +21,13 @@ import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import
org.apache.shardingsphere.spi.exception.ServiceLoaderInstantiationException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Map;
import java.util.ServiceLoader;
import java.util.concurrent.ConcurrentHashMap;
-import java.util.stream.Collectors;
/**
* ShardingSphere service loader.
@@ -77,7 +77,18 @@ public final class ShardingSphereServiceLoader {
*/
@SuppressWarnings("unchecked")
public static <T> Collection<T> newServiceInstances(final Class<T>
service) {
- return SERVICES.containsKey(service) ?
SERVICES.get(service).stream().map(each -> (T)
newServiceInstance(each.getClass())).collect(Collectors.toList()) :
Collections.emptyList();
+ if (!SERVICES.containsKey(service)) {
+ return Collections.emptyList();
+ }
+ Collection<Object> services = SERVICES.get(service);
+ if (services.isEmpty()) {
+ return Collections.emptyList();
+ }
+ Collection<T> result = new ArrayList<>(services.size());
+ for (Object each : services) {
+ result.add((T) newServiceInstance(each.getClass()));
+ }
+ return result;
}
private static Object newServiceInstance(final Class<?> clazz) {