This is an automated email from the ASF dual-hosted git repository.
strongduanmu 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 63450e6192c Replace router stream API with loop (#38776)
63450e6192c is described below
commit 63450e6192c13e0d2d451b655583bbdbd36e0b56
Author: ZhangCheng <[email protected]>
AuthorDate: Tue Jun 2 17:39:34 2026 +0800
Replace router stream API with loop (#38776)
---
.../infra/route/context/RouteContext.java | 17 ++++++++++++++---
.../shardingsphere/infra/route/context/RouteUnit.java | 15 ++++++++++++---
.../statement/core/extractor/ColumnExtractor.java | 12 +++++++++---
3 files changed, 35 insertions(+), 9 deletions(-)
diff --git
a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteContext.java
b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteContext.java
index 5d415094660..51aaafa287d 100644
---
a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteContext.java
+++
b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteContext.java
@@ -21,6 +21,7 @@ import lombok.Getter;
import org.apache.shardingsphere.infra.datanode.DataNode;
import org.apache.shardingsphere.infra.rule.ShardingSphereRule;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -31,7 +32,6 @@ import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* Route context.
@@ -60,7 +60,11 @@ public final class RouteContext {
* @return actual data source names
*/
public Collection<String> getActualDataSourceNames() {
- return routeUnits.stream().map(each ->
each.getDataSourceMapper().getActualName()).collect(Collectors.toSet());
+ Collection<String> result = new HashSet<>(routeUnits.size(), 1F);
+ for (RouteUnit each : routeUnits) {
+ result.add(each.getDataSourceMapper().getActualName());
+ }
+ return result;
}
/**
@@ -75,7 +79,14 @@ public final class RouteContext {
* @return actual table groups
*/
public List<Set<String>> getActualTableNameGroups(final String
actualDataSourceName, final Set<String> logicTableNames) {
- return logicTableNames.stream().map(each ->
getActualTableNames(actualDataSourceName, each)).filter(each ->
!each.isEmpty()).collect(Collectors.toList());
+ List<Set<String>> result = new ArrayList<>(logicTableNames.size());
+ for (String each : logicTableNames) {
+ Set<String> actualTableNames =
getActualTableNames(actualDataSourceName, each);
+ if (!actualTableNames.isEmpty()) {
+ result.add(actualTableNames);
+ }
+ }
+ return result;
}
private Set<String> getActualTableNames(final String actualDataSourceName,
final String logicTableName) {
diff --git
a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteUnit.java
b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteUnit.java
index a7689333288..44f4ef97346 100644
---
a/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteUnit.java
+++
b/infra/route/core/src/main/java/org/apache/shardingsphere/infra/route/context/RouteUnit.java
@@ -26,7 +26,6 @@ import java.util.Collection;
import java.util.HashSet;
import java.util.Optional;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* Route unit.
@@ -53,7 +52,11 @@ public final class RouteUnit {
* @return logic table names
*/
public Set<String> getLogicTableNames() {
- return
tableMappers.stream().map(RouteMapper::getLogicName).collect(Collectors.toCollection(()
-> new HashSet<>(tableMappers.size(), 1L)));
+ Set<String> result = new HashSet<>(tableMappers.size(), 1F);
+ for (RouteMapper each : tableMappers) {
+ result.add(each.getLogicName());
+ }
+ return result;
}
/**
@@ -63,7 +66,13 @@ public final class RouteUnit {
* @return actual table names
*/
public Set<String> getActualTableNames(final String logicTableName) {
- return tableMappers.stream().filter(each ->
logicTableName.equalsIgnoreCase(each.getLogicName())).map(RouteMapper::getActualName).collect(Collectors.toSet());
+ Set<String> result = new HashSet<>(tableMappers.size(), 1F);
+ for (RouteMapper each : tableMappers) {
+ if (logicTableName.equalsIgnoreCase(each.getLogicName())) {
+ result.add(each.getActualName());
+ }
+ }
+ return result;
}
/**
diff --git
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/extractor/ColumnExtractor.java
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/extractor/ColumnExtractor.java
index 987f37320c8..afe8e8ab5e3 100644
---
a/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/extractor/ColumnExtractor.java
+++
b/parser/sql/statement/core/src/main/java/org/apache/shardingsphere/sql/parser/statement/core/extractor/ColumnExtractor.java
@@ -142,7 +142,9 @@ public final class ColumnExtractor {
private static void extractReturnedColumnsInCaseWhenExpression(final
CaseWhenExpression expression, final Collection<ColumnSegment> result) {
if (null != expression.getThenExprs()) {
-
expression.getThenExprs().stream().map(ColumnExtractor::extractIncludeColumnSegment).forEach(result::addAll);
+ for (ExpressionSegment each : expression.getThenExprs()) {
+ result.addAll(extractIncludeColumnSegment(each));
+ }
}
if (null != expression.getElseExpr()) {
result.addAll(extractIncludeColumnSegment(expression.getElseExpr()));
@@ -154,10 +156,14 @@ public final class ColumnExtractor {
result.addAll(extractIncludeColumnSegment(expression.getCaseExpr()));
}
if (null != expression.getWhenExprs()) {
-
expression.getWhenExprs().stream().map(ColumnExtractor::extractIncludeColumnSegment).forEach(result::addAll);
+ for (ExpressionSegment each : expression.getWhenExprs()) {
+ result.addAll(extractIncludeColumnSegment(each));
+ }
}
if (null != expression.getThenExprs()) {
-
expression.getThenExprs().stream().map(ColumnExtractor::extractIncludeColumnSegment).forEach(result::addAll);
+ for (ExpressionSegment each : expression.getThenExprs()) {
+ result.addAll(extractIncludeColumnSegment(each));
+ }
}
if (null != expression.getElseExpr()) {
result.addAll(extractIncludeColumnSegment(expression.getElseExpr()));