You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2023/01/29 08:49:05 UTC
[doris] branch master updated: [refactor](Nereids) use immutable collections as far as possible (#16193)
This is an automated email from the ASF dual-hosted git repository.
morrysnow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 1ad6ef939b [refactor](Nereids) use immutable collections as far as possible (#16193)
1ad6ef939b is described below
commit 1ad6ef939b46865706988465bd4c0b6ac6cfb59f
Author: morrySnow <10...@users.noreply.github.com>
AuthorDate: Sun Jan 29 16:48:58 2023 +0800
[refactor](Nereids) use immutable collections as far as possible (#16193)
---
.../org/apache/doris/catalog/FunctionRegistry.java | 3 +--
.../doris/nereids/analyzer/UnboundFunction.java | 2 +-
.../doris/nereids/analyzer/UnboundRelation.java | 9 +++-----
.../apache/doris/nereids/analyzer/UnboundStar.java | 4 +++-
.../glue/translator/PhysicalPlanTranslator.java | 2 +-
.../glue/translator/RuntimeFilterTranslator.java | 1 -
.../doris/nereids/metrics/EventSwitchParser.java | 4 ++--
.../doris/nereids/parser/LogicalPlanBuilder.java | 24 +++++++++-----------
.../nereids/properties/LogicalProperties.java | 16 ++++++-------
.../AdjustAggregateNullableForEmptySet.java | 6 ++---
.../rules/analysis/AvgDistinctToSumDivCount.java | 10 ++++-----
.../doris/nereids/rules/analysis/BindFunction.java | 11 +++++----
.../doris/nereids/rules/analysis/BindRelation.java | 6 ++---
.../nereids/rules/analysis/FillUpMissingSlots.java | 11 +++++----
.../analysis/ReplaceExpressionByChildOutput.java | 3 +--
.../apache/doris/nereids/rules/analysis/Scope.java | 8 +++----
.../expression/rewrite/ExpressionRewrite.java | 26 ++++++++++++----------
.../expression/rewrite/ExpressionRuleExecutor.java | 5 +++--
.../rewrite/rules/ExtractCommonFactorRule.java | 11 +++++----
.../rules/rewrite/logical/AdjustNullable.java | 11 ++++-----
.../rewrite/logical/ApplyPullFilterOnAgg.java | 6 +++--
.../rewrite/logical/EliminateOrderByConstant.java | 5 +++--
.../logical/ExtractFilterFromCrossJoin.java | 5 +++--
.../nereids/rules/rewrite/logical/MultiJoin.java | 7 +++---
.../rewrite/logical/PruneAggChildColumns.java | 3 +--
.../rewrite/logical/PruneJoinChildrenColumns.java | 8 +++----
.../rewrite/logical/PruneRepeatChildColumns.java | 3 +--
.../rewrite/logical/PruneSortChildColumns.java | 3 +--
.../PushdownExpressionsInHashCondition.java | 11 +++++----
.../logical/PushdownFilterThroughSetOperation.java | 5 +++--
.../org/apache/doris/nereids/trees/LeafNode.java | 1 +
.../trees/expressions/AggregateExpression.java | 2 +-
.../doris/nereids/trees/expressions/CaseWhen.java | 15 ++++++-------
.../trees/expressions/ExpressionEvaluator.java | 1 +
.../nereids/trees/expressions/SlotReference.java | 2 +-
.../expressions/functions/agg/IntersectCount.java | 7 +++---
.../functions/agg/MultiDistinctCount.java | 7 +++---
.../doris/nereids/trees/plans/GroupPlan.java | 1 +
.../apache/doris/nereids/trees/plans/LeafPlan.java | 1 +
.../doris/nereids/trees/plans/PreAggStatus.java | 1 +
.../doris/nereids/trees/plans/RelationId.java | 1 +
.../doris/nereids/trees/plans/UnaryPlan.java | 3 +--
.../nereids/trees/plans/algebra/Aggregate.java | 2 +-
.../doris/nereids/trees/plans/algebra/Project.java | 9 ++++----
.../trees/plans/logical/LogicalAggregate.java | 3 ++-
.../nereids/trees/plans/logical/LogicalApply.java | 3 ++-
.../trees/plans/logical/LogicalAssertNumRows.java | 1 +
.../nereids/trees/plans/logical/LogicalBinary.java | 9 --------
.../nereids/trees/plans/logical/LogicalCTE.java | 6 ++---
.../trees/plans/logical/LogicalEmptyRelation.java | 3 ++-
.../trees/plans/logical/LogicalFileScan.java | 5 -----
.../nereids/trees/plans/logical/LogicalFilter.java | 4 ++--
.../nereids/trees/plans/logical/LogicalJoin.java | 6 ++---
.../nereids/trees/plans/logical/LogicalLeaf.java | 8 -------
.../nereids/trees/plans/logical/LogicalLimit.java | 5 ++---
.../trees/plans/logical/LogicalOlapScan.java | 7 +++---
.../trees/plans/logical/LogicalOneRowRelation.java | 3 ++-
.../trees/plans/logical/LogicalProject.java | 5 ++---
.../trees/plans/logical/LogicalRelation.java | 9 +++-----
.../nereids/trees/plans/logical/LogicalRepeat.java | 5 ++---
.../trees/plans/logical/LogicalSchemaScan.java | 11 ++++-----
.../trees/plans/logical/LogicalSelectHint.java | 3 ++-
.../trees/plans/logical/LogicalSubQueryAlias.java | 2 +-
.../trees/plans/logical/LogicalTVFRelation.java | 1 +
.../nereids/trees/plans/logical/LogicalTopN.java | 2 +-
.../nereids/trees/plans/logical/LogicalUnion.java | 1 +
.../nereids/trees/plans/logical/RelationUtil.java | 1 +
.../nereids/trees/plans/logical/UsingJoin.java | 5 ++---
.../trees/plans/physical/AbstractPhysicalJoin.java | 11 +++++----
.../trees/plans/physical/AbstractPhysicalSort.java | 2 +-
.../plans/physical/PhysicalAssertNumRows.java | 1 +
.../trees/plans/physical/PhysicalBinary.java | 5 ++---
.../plans/physical/PhysicalEmptyRelation.java | 3 ++-
.../trees/plans/physical/PhysicalFilter.java | 1 +
.../trees/plans/physical/PhysicalHashJoin.java | 1 +
.../nereids/trees/plans/physical/PhysicalLeaf.java | 1 +
.../trees/plans/physical/PhysicalLimit.java | 2 +-
.../trees/plans/physical/PhysicalOlapScan.java | 1 +
.../plans/physical/PhysicalOneRowRelation.java | 3 ++-
.../nereids/trees/plans/physical/PhysicalPlan.java | 1 +
.../trees/plans/physical/PhysicalProject.java | 2 +-
.../trees/plans/physical/PhysicalRelation.java | 7 +++---
.../trees/plans/physical/PhysicalRepeat.java | 4 ++--
.../trees/plans/physical/PhysicalSetOperation.java | 1 +
.../physical/PhysicalStorageLayerAggregate.java | 1 +
.../trees/plans/physical/PhysicalTVFRelation.java | 1 +
.../trees/plans/physical/RuntimeFilter.java | 15 ++-----------
.../org/apache/doris/nereids/util/JoinUtils.java | 2 +-
88 files changed, 211 insertions(+), 244 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
index 69ec50ae45..78dd1ccd01 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionRegistry.java
@@ -58,7 +58,7 @@ public class FunctionRegistry {
}
// currently we only find function by name and arity
- public FunctionBuilder findFunctionBuilder(String name, List<? extends Object> arguments) {
+ public FunctionBuilder findFunctionBuilder(String name, List<?> arguments) {
int arity = arguments.size();
List<FunctionBuilder> functionBuilders = name2Builders.get(name.toLowerCase());
if (functionBuilders == null || functionBuilders.isEmpty()) {
@@ -78,7 +78,6 @@ public class FunctionRegistry {
if (candidateBuilders.size() > 1) {
String candidateHints = getCandidateHint(name, candidateBuilders);
// NereidsPlanner not supported override function by the same arity, should we support it?
-
throw new AnalysisException("Function '" + name + "' is ambiguous: " + candidateHints);
}
return candidateBuilders.get(0);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java
index 5b8b22f85f..fa6e24722e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundFunction.java
@@ -42,7 +42,7 @@ public class UnboundFunction extends Function implements Unbound, PropagateNulla
}
public UnboundFunction(String name, boolean isDistinct, List<Expression> arguments) {
- super(arguments.toArray(new Expression[0]));
+ super(arguments);
this.name = Objects.requireNonNull(name, "name cannot be null");
this.isDistinct = isDistinct;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
index e61ba7818c..f33009b982 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundRelation.java
@@ -34,7 +34,6 @@ import org.apache.doris.nereids.util.Utils;
import com.google.common.collect.ImmutableList;
import org.apache.commons.lang3.StringUtils;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -48,8 +47,7 @@ public class UnboundRelation extends LogicalRelation implements Unbound {
private final boolean isTempPart;
public UnboundRelation(RelationId id, List<String> nameParts) {
- this(id, nameParts, Optional.empty(), Optional.empty(),
- Collections.emptyList(), false);
+ this(id, nameParts, Optional.empty(), Optional.empty(), ImmutableList.of(), false);
}
public UnboundRelation(RelationId id, List<String> nameParts, List<String> partNames, boolean isTempPart) {
@@ -59,7 +57,7 @@ public class UnboundRelation extends LogicalRelation implements Unbound {
public UnboundRelation(RelationId id, List<String> nameParts, Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties, List<String> partNames, boolean isTempPart) {
super(id, PlanType.LOGICAL_UNBOUND_RELATION, groupExpression, logicalProperties);
- this.nameParts = nameParts;
+ this.nameParts = ImmutableList.copyOf(Objects.requireNonNull(nameParts, "nameParts should not null"));
this.partNames = ImmutableList.copyOf(Objects.requireNonNull(partNames, "partNames should not null"));
this.isTempPart = isTempPart;
}
@@ -91,8 +89,7 @@ public class UnboundRelation extends LogicalRelation implements Unbound {
@Override
public Plan withLogicalProperties(Optional<LogicalProperties> logicalProperties) {
- return new UnboundRelation(id, nameParts, Optional.empty(), logicalProperties, partNames,
- isTempPart);
+ return new UnboundRelation(id, nameParts, Optional.empty(), logicalProperties, partNames, isTempPart);
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundStar.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundStar.java
index 44f29cd2ad..2ba1d593d0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundStar.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/analyzer/UnboundStar.java
@@ -24,6 +24,8 @@ import org.apache.doris.nereids.trees.expressions.shape.LeafExpression;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.util.Utils;
+import com.google.common.collect.ImmutableList;
+
import java.util.List;
import java.util.Objects;
@@ -34,7 +36,7 @@ public class UnboundStar extends NamedExpression implements LeafExpression, Unbo
private final List<String> qualifier;
public UnboundStar(List<String> qualifier) {
- this.qualifier = Objects.requireNonNull(qualifier, "qualifier can not be null");
+ this.qualifier = Objects.requireNonNull(ImmutableList.copyOf(qualifier), "qualifier can not be null");
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
index 8e2894ddc1..581c2418a3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/PhysicalPlanTranslator.java
@@ -1643,7 +1643,7 @@ public class PhysicalPlanTranslator extends DefaultPlanVisitor<PlanFragment, Pla
// and the original exprId should be retained at this time.
groupSlotList.add((SlotReference) e);
} else {
- groupSlotList.add(new SlotReference(e.toSql(), e.getDataType(), e.nullable(), Collections.emptyList()));
+ groupSlotList.add(new SlotReference(e.toSql(), e.getDataType(), e.nullable(), ImmutableList.of()));
}
}
return groupSlotList;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/RuntimeFilterTranslator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/RuntimeFilterTranslator.java
index 09dbb4115b..2195ff94ef 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/RuntimeFilterTranslator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/glue/translator/RuntimeFilterTranslator.java
@@ -83,7 +83,6 @@ public class RuntimeFilterTranslator {
ImmutableMap.of(target.getDesc().getParent().getId(), ImmutableList.of(target.getSlotId())),
filter.getType(), context.getLimits());
origFilter.setIsBroadcast(node.getDistributionMode() == DistributionMode.BROADCAST);
- filter.setFinalized();
OlapScanNode scanNode = context.getScanNodeOfLegacyRuntimeFilterTarget().get(filter.getTargetExpr());
origFilter.addTarget(new RuntimeFilterTarget(
scanNode,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/metrics/EventSwitchParser.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/metrics/EventSwitchParser.java
index 2bd5287b0e..48620afc52 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/metrics/EventSwitchParser.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/metrics/EventSwitchParser.java
@@ -25,6 +25,7 @@ import org.apache.doris.nereids.metrics.event.GroupMergeEvent;
import org.apache.doris.nereids.metrics.event.StatsStateEvent;
import org.apache.doris.nereids.metrics.event.TransformEvent;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap.Builder;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Maps;
@@ -33,7 +34,6 @@ import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* parser
@@ -76,7 +76,7 @@ public class EventSwitchParser {
public static List<String> checkEventModeStringAndSplit(String eventTypeMode) {
List<String> strings = Arrays.stream(eventTypeMode.toLowerCase().split("[\\s+,]"))
.map(String::trim)
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (strings.size() == 0) {
return null;
} else if ("all".equals(strings.get(0))) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
index 7bcd6be9a6..575f20c994 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/parser/LogicalPlanBuilder.java
@@ -247,7 +247,6 @@ import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Build a logical plan tree with unbounded nodes.
@@ -320,7 +319,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
String functionName = ctx.functionName.getText();
List<Expression> arguments = ctx.expression().stream()
.<Expression>map(this::typedVisit)
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
Function unboundFunction = new UnboundFunction(functionName, arguments);
return new LogicalGenerate<>(ImmutableList.of(unboundFunction),
ImmutableList.of(new UnboundSlot(generateName, columnName)), plan);
@@ -516,7 +515,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
.map(RuleContext::getText)
.collect(ImmutableList.toImmutableList());
} else {
- target = Collections.emptyList();
+ target = ImmutableList.of();
}
return new UnboundStar(target);
});
@@ -884,7 +883,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
Expression e = getExpression(context.value);
List<WhenClause> whenClauses = context.whenClause().stream()
.map(w -> new WhenClause(new EqualTo(e, getExpression(w.condition)), getExpression(w.result)))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (context.elseExpression == null) {
return new CaseWhen(whenClauses);
}
@@ -907,7 +906,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
public Expression visitSearchedCase(DorisParser.SearchedCaseContext context) {
List<WhenClause> whenClauses = context.whenClause().stream()
.map(w -> new WhenClause(getExpression(w.condition), getExpression(w.result)))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (context.elseExpression == null) {
return new CaseWhen(whenClauses);
}
@@ -1296,11 +1295,11 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
if (!expressions.stream().allMatch(UnboundSlot.class::isInstance)) {
throw new ParseException("only column name is supported in except clause", selectColumnCtx);
}
- project = new LogicalProject<>(ImmutableList.of(new UnboundStar(Collections.emptyList())),
+ project = new LogicalProject<>(ImmutableList.of(new UnboundStar(ImmutableList.of())),
expressions, aggregate, isDistinct);
} else {
List<NamedExpression> projects = getNamedExpressions(selectColumnCtx.namedExpressionSeq());
- project = new LogicalProject<>(projects, Collections.emptyList(), aggregate, isDistinct);
+ project = new LogicalProject<>(projects, ImmutableList.of(), aggregate, isDistinct);
}
return new LogicalHaving<>(ExpressionUtils.extractConjunctionToSet(
getExpression((havingClause.get().booleanExpression()))), project);
@@ -1365,8 +1364,8 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
condition = Optional.ofNullable(getExpression(joinCriteria.booleanExpression()));
} else if (joinCriteria.USING() != null) {
ids = visitIdentifierList(joinCriteria.identifierList())
- .stream().map(UnboundSlot::quoted).collect(
- Collectors.toList());
+ .stream().map(UnboundSlot::quoted)
+ .collect(ImmutableList.toImmutableList());
}
} else {
// keep same with original planner, allow cross/inner join
@@ -1382,8 +1381,7 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
last,
plan(join.relationPrimary()));
} else {
- last = new UsingJoin(joinType, last,
- plan(join.relationPrimary()), Collections.emptyList(), ids, joinHint);
+ last = new UsingJoin(joinType, last, plan(join.relationPrimary()), ImmutableList.of(), ids, joinHint);
}
}
return last;
@@ -1436,11 +1434,11 @@ public class LogicalPlanBuilder extends DorisParserBaseVisitor<Object> {
if (!expressions.stream().allMatch(UnboundSlot.class::isInstance)) {
throw new ParseException("only column name is supported in except clause", selectCtx);
}
- return new LogicalProject<>(ImmutableList.of(new UnboundStar(Collections.emptyList())),
+ return new LogicalProject<>(ImmutableList.of(new UnboundStar(ImmutableList.of())),
expressions, input, isDistinct);
} else {
List<NamedExpression> projects = getNamedExpressions(selectCtx.namedExpressionSeq());
- return new LogicalProject<>(projects, Collections.emptyList(), input, isDistinct);
+ return new LogicalProject<>(projects, ImmutableList.of(), input, isDistinct);
}
}
});
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/LogicalProperties.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/LogicalProperties.java
index de47654382..913d565ac9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/LogicalProperties.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/properties/LogicalProperties.java
@@ -25,14 +25,13 @@ import org.apache.doris.nereids.trees.expressions.Slot;
import com.google.common.base.Supplier;
import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Sets;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
-import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* Logical properties used for analysis and optimize in Nereids.
@@ -65,17 +64,18 @@ public class LogicalProperties {
);
this.outputExprIdsSupplier = Suppliers.memoize(
() -> this.outputSupplier.get().stream().map(NamedExpression::getExprId).map(Id.class::cast)
- .collect(Collectors.toList())
+ .collect(ImmutableList.toImmutableList())
);
this.outputSetSupplier = Suppliers.memoize(
- () -> Sets.newHashSet(this.outputSupplier.get())
+ () -> ImmutableSet.copyOf(this.outputSupplier.get())
);
this.outputMapSupplier = Suppliers.memoize(
- () -> this.outputSetSupplier.get().stream().collect(Collectors.toMap(s -> s, s -> s))
+ () -> this.outputSetSupplier.get().stream().collect(ImmutableMap.toImmutableMap(s -> s, s -> s))
);
this.outputExprIdSetSupplier = Suppliers.memoize(
- () -> this.outputSupplier.get().stream().map(NamedExpression::getExprId)
- .collect(Collectors.toCollection(HashSet::new))
+ () -> this.outputSupplier.get().stream()
+ .map(NamedExpression::getExprId)
+ .collect(ImmutableSet.toImmutableSet())
);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AdjustAggregateNullableForEmptySet.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AdjustAggregateNullableForEmptySet.java
index b913c6ac45..41c68a3292 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AdjustAggregateNullableForEmptySet.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AdjustAggregateNullableForEmptySet.java
@@ -27,10 +27,10 @@ import org.apache.doris.nereids.trees.expressions.visitor.DefaultExpressionRewri
import org.apache.doris.nereids.trees.plans.logical.LogicalHaving;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* adjust aggregate nullable when: group expr list is empty and function is NullableAggregateFunction,
@@ -46,7 +46,7 @@ public class AdjustAggregateNullableForEmptySet implements RewriteRuleFactory {
List<NamedExpression> output = agg.getOutputExpressions().stream()
.map(ne -> ((NamedExpression) FunctionReplacer.INSTANCE.replace(ne,
agg.getGroupByExpressions().isEmpty())))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
return agg.withAggOutput(output);
})
),
@@ -56,7 +56,7 @@ public class AdjustAggregateNullableForEmptySet implements RewriteRuleFactory {
Set<Expression> newConjuncts = having.getConjuncts().stream()
.map(ne -> FunctionReplacer.INSTANCE.replace(ne,
having.child().getGroupByExpressions().isEmpty()))
- .collect(Collectors.toSet());
+ .collect(ImmutableSet.toImmutableSet());
return new LogicalHaving<>(newConjuncts, having.child());
})
)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AvgDistinctToSumDivCount.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AvgDistinctToSumDivCount.java
index 8813d6fec5..f72e4bc5cd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AvgDistinctToSumDivCount.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/AvgDistinctToSumDivCount.java
@@ -29,11 +29,11 @@ import org.apache.doris.nereids.trees.expressions.functions.agg.Sum;
import org.apache.doris.nereids.trees.plans.logical.LogicalAggregate;
import org.apache.doris.nereids.util.ExpressionUtils;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
/**
* AvgDistinctToSumDivCount.
@@ -51,15 +51,13 @@ public class AvgDistinctToSumDivCount extends OneAnalysisRuleFactory {
.collect(ImmutableMap.toImmutableMap(function -> function, function -> {
Sum sum = new Sum(true, ((Avg) function).child());
Count count = new Count(true, ((Avg) function).child());
- Divide divide = new Divide(sum, count);
- return divide;
+ return new Divide(sum, count);
}));
if (!avgToSumDivCount.isEmpty()) {
List<NamedExpression> newOutput = agg.getOutputExpressions().stream()
.map(expr -> (NamedExpression) ExpressionUtils.replace(expr, avgToSumDivCount))
- .collect(Collectors.toList());
- return new LogicalAggregate<>(agg.getGroupByExpressions(), newOutput,
- agg.child());
+ .collect(ImmutableList.toImmutableList());
+ return new LogicalAggregate<>(agg.getGroupByExpressions(), newOutput, agg.child());
} else {
return agg;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java
index cffdc9c96e..0bb4e17296 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindFunction.java
@@ -53,11 +53,11 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalTVFRelation;
import org.apache.doris.qe.ConnectContext;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import java.util.List;
import java.util.Locale;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* BindFunction.
@@ -163,7 +163,7 @@ public class BindFunction implements AnalysisRuleFactory {
ExpressionRewriteContext rewriteContext = new ExpressionRewriteContext(ctx);
return exprList.stream()
.map(expr -> bindAndTypeCoercion(expr, ctx.getEnv(), rewriteContext))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
}
private <E extends Expression> E bindAndTypeCoercion(E expr, Env env, ExpressionRewriteContext ctx) {
@@ -177,7 +177,7 @@ public class BindFunction implements AnalysisRuleFactory {
ExpressionRewriteContext rewriteContext = new ExpressionRewriteContext(ctx);
return exprSet.stream()
.map(expr -> bindAndTypeCoercion(expr, ctx.getEnv(), rewriteContext))
- .collect(Collectors.toSet());
+ .collect(ImmutableSet.toImmutableSet());
}
/**
@@ -216,12 +216,11 @@ public class BindFunction implements AnalysisRuleFactory {
Env env = statementContext.getConnectContext().getEnv();
List<Expression> boundArguments = unboundFunction.getArguments().stream()
.map(e -> INSTANCE.bind(e, env))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
FunctionRegistry functionRegistry = env.getFunctionRegistry();
String functionName = unboundFunction.getName();
- FunctionBuilder functionBuilder = functionRegistry.findFunctionBuilder(
- functionName, boundArguments);
+ FunctionBuilder functionBuilder = functionRegistry.findFunctionBuilder(functionName, boundArguments);
BoundFunction function = functionBuilder.build(functionName, boundArguments);
if (!(function instanceof TableGeneratingFunction)) {
throw new AnalysisException(function.toSql() + " is not a TableGeneratingFunction");
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
index 6093817a66..fce1228a6c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/BindRelation.java
@@ -55,10 +55,8 @@ import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.commons.collections.CollectionUtils;
-import java.util.Collections;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Rule to bind relations in query plan.
@@ -217,7 +215,7 @@ public class BindRelation extends OneAnalysisRuleFactory {
private List<Long> getPartitionIds(TableIf t, UnboundRelation unboundRelation) {
List<String> parts = unboundRelation.getPartNames();
if (CollectionUtils.isEmpty(parts)) {
- return Collections.emptyList();
+ return ImmutableList.of();
}
if (!t.getType().equals(TableIf.TableType.OLAP)) {
throw new IllegalStateException(String.format(
@@ -230,6 +228,6 @@ public class BindRelation extends OneAnalysisRuleFactory {
throw new IllegalStateException(String.format("Partition: %s is not exists", name));
}
return part.getId();
- }).collect(Collectors.toList());
+ }).collect(ImmutableList.toImmutableList());
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java
index 4d0e640fbf..045ac37aed 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/FillUpMissingSlots.java
@@ -243,13 +243,12 @@ public class FillUpMissingSlots implements AnalysisRuleFactory {
Plan apply(Resolver resolver, Aggregate aggregate);
}
- private Plan createPlan(Resolver resolver, Aggregate<? extends Plan> aggregate,
- PlanGenerator planGenerator) {
+ private Plan createPlan(Resolver resolver, Aggregate<? extends Plan> aggregate, PlanGenerator planGenerator) {
List<NamedExpression> projections = aggregate.getOutputExpressions().stream()
- .map(NamedExpression::toSlot).collect(Collectors.toList());
- List<NamedExpression> newOutputExpressions = Streams.concat(
- aggregate.getOutputExpressions().stream(), resolver.getNewOutputSlots().stream()
- ).collect(Collectors.toList());
+ .map(NamedExpression::toSlot).collect(ImmutableList.toImmutableList());
+ List<NamedExpression> newOutputExpressions = Streams
+ .concat(aggregate.getOutputExpressions().stream(), resolver.getNewOutputSlots().stream())
+ .collect(ImmutableList.toImmutableList());
Aggregate newAggregate = aggregate.withAggOutput(newOutputExpressions);
Plan plan = planGenerator.apply(resolver, newAggregate);
return new LogicalProject<>(projections, plan);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ReplaceExpressionByChildOutput.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ReplaceExpressionByChildOutput.java
index fb04a9c8de..ba953307eb 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ReplaceExpressionByChildOutput.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/ReplaceExpressionByChildOutput.java
@@ -36,7 +36,6 @@ import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
/**
* replace.
@@ -89,7 +88,7 @@ public class ReplaceExpressionByChildOutput implements AnalysisRuleFactory {
changed.set(true);
}
return new OrderKey(newExpr, k.isAsc(), k.isNullFirst());
- }).collect(Collectors.toList());
+ }).collect(ImmutableList.toImmutableList());
if (changed.get()) {
return new LogicalSort<>(newKeys, sort.child());
} else {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/Scope.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/Scope.java
index 918392f9a5..1c0db90f8a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/Scope.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/analysis/Scope.java
@@ -25,6 +25,7 @@ import com.google.common.collect.ImmutableList.Builder;
import java.util.ArrayList;
import java.util.List;
+import java.util.Objects;
import java.util.Optional;
/**
@@ -60,16 +61,13 @@ public class Scope {
public Scope(Optional<Scope> outerScope, List<Slot> slots, Optional<SubqueryExpr> subqueryExpr) {
this.outerScope = outerScope;
- this.slots = slots;
+ this.slots = ImmutableList.copyOf(Objects.requireNonNull(slots, "slots can not be null"));
this.ownerSubquery = subqueryExpr;
this.correlatedSlots = new ArrayList<>();
}
public Scope(List<Slot> slots) {
- this.outerScope = Optional.empty();
- this.slots = slots;
- this.ownerSubquery = Optional.empty();
- this.correlatedSlots = new ArrayList<>();
+ this(Optional.empty(), slots, Optional.empty());
}
public List<Slot> getSlots() {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
index 5a54c4aa71..d4e033cb35 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRewrite.java
@@ -41,7 +41,6 @@ import java.util.HashSet;
import java.util.List;
import java.util.Objects;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* expression of plan rewrite rule.
@@ -82,7 +81,7 @@ public class ExpressionRewrite implements RewriteRuleFactory {
List<Function> generators = generate.getGenerators();
List<Function> newGenerators = generators.stream()
.map(func -> (Function) rewriter.rewrite(func))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (generators.equals(newGenerators)) {
return generate;
}
@@ -99,7 +98,7 @@ public class ExpressionRewrite implements RewriteRuleFactory {
List<NamedExpression> newProjects = projects
.stream()
.map(expr -> (NamedExpression) rewriter.rewrite(expr))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (projects.equals(newProjects)) {
return oneRowRelation;
}
@@ -114,8 +113,8 @@ public class ExpressionRewrite implements RewriteRuleFactory {
return logicalProject().then(project -> {
List<NamedExpression> projects = project.getProjects();
List<NamedExpression> newProjects = projects.stream()
- .map(expr -> (NamedExpression) rewriter.rewrite(expr)).collect(Collectors.toList());
- if (projects.containsAll(newProjects)) {
+ .map(expr -> (NamedExpression) rewriter.rewrite(expr)).collect(ImmutableList.toImmutableList());
+ if (projects.equals(newProjects)) {
return project;
}
return new LogicalProject<>(newProjects, project.child());
@@ -146,8 +145,8 @@ public class ExpressionRewrite implements RewriteRuleFactory {
List<NamedExpression> outputExpressions = agg.getOutputExpressions();
List<NamedExpression> newOutputExpressions = outputExpressions.stream()
- .map(expr -> (NamedExpression) rewriter.rewrite(expr)).collect(Collectors.toList());
- if (outputExpressions.containsAll(newOutputExpressions) && groupByExprs.containsAll(newGroupByExprs)) {
+ .map(expr -> (NamedExpression) rewriter.rewrite(expr)).collect(ImmutableList.toImmutableList());
+ if (outputExpressions.equals(newOutputExpressions)) {
return agg;
}
return new LogicalAggregate<>(newGroupByExprs, newOutputExpressions,
@@ -223,13 +222,16 @@ public class ExpressionRewrite implements RewriteRuleFactory {
@Override
public Rule build() {
return logicalRepeat().then(r -> {
- List<List<Expression>> groupingExprs = new ArrayList<>();
+ ImmutableList.Builder<List<Expression>> groupingExprs = ImmutableList.builder();
for (List<Expression> expressions : r.getGroupingSets()) {
- groupingExprs.add(expressions.stream().map(rewriter::rewrite).collect(Collectors.toList()));
+ groupingExprs.add(expressions.stream().map(rewriter::rewrite)
+ .collect(ImmutableList.toImmutableList()));
}
- return r.withGroupSetsAndOutput(groupingExprs,
- r.getOutputExpressions().stream().map(rewriter::rewrite).map(e -> (NamedExpression) e)
- .collect(Collectors.toList()));
+ return r.withGroupSetsAndOutput(groupingExprs.build(),
+ r.getOutputExpressions().stream()
+ .map(rewriter::rewrite)
+ .map(e -> (NamedExpression) e)
+ .collect(ImmutableList.toImmutableList()));
}).toRule(RuleType.REWRITE_REPEAT_EXPRESSION);
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRuleExecutor.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRuleExecutor.java
index d8da2617cc..fdcb0ba497 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRuleExecutor.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/ExpressionRuleExecutor.java
@@ -21,9 +21,10 @@ import org.apache.doris.nereids.rules.expression.rewrite.rules.NormalizeBinaryPr
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.qe.ConnectContext;
+import com.google.common.collect.ImmutableList;
+
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Expression rewrite entry, which contains all rewrite rules.
@@ -43,7 +44,7 @@ public class ExpressionRuleExecutor {
}
public List<Expression> rewrite(List<Expression> exprs) {
- return exprs.stream().map(this::rewrite).collect(Collectors.toList());
+ return exprs.stream().map(this::rewrite).collect(ImmutableList.toImmutableList());
}
/**
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/ExtractCommonFactorRule.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/ExtractCommonFactorRule.java
index 5f011fe178..d02a0da2d6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/ExtractCommonFactorRule.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/expression/rewrite/rules/ExtractCommonFactorRule.java
@@ -24,10 +24,12 @@ import org.apache.doris.nereids.trees.expressions.CompoundPredicate;
import org.apache.doris.nereids.trees.expressions.Expression;
import org.apache.doris.nereids.util.ExpressionUtils;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
@@ -47,8 +49,7 @@ public class ExtractCommonFactorRule extends AbstractExpressionRewriteRule {
public Expression visitCompoundPredicate(CompoundPredicate expr, ExpressionRewriteContext context) {
Expression rewrittenChildren = ExpressionUtils.combine(expr.getClass(), ExpressionUtils.extract(expr).stream()
- .map(predicate -> rewrite(predicate, context)).collect(Collectors.toList()));
-
+ .map(predicate -> rewrite(predicate, context)).collect(ImmutableList.toImmutableList()));
if (!(rewrittenChildren instanceof CompoundPredicate)) {
return rewrittenChildren;
}
@@ -59,8 +60,10 @@ public class ExtractCommonFactorRule extends AbstractExpressionRewriteRule {
.map(predicate -> predicate instanceof CompoundPredicate ? ExpressionUtils.extract(
(CompoundPredicate) predicate) : Lists.newArrayList(predicate)).collect(Collectors.toList());
- Set<Expression> commons = partitions.stream().map(predicates -> predicates.stream().collect(Collectors.toSet()))
- .reduce(Sets::intersection).orElse(Collections.emptySet());
+ Set<Expression> commons = partitions.stream()
+ .<Set<Expression>>map(HashSet::new)
+ .reduce(Sets::intersection)
+ .orElse(Collections.emptySet());
List<List<Expression>> uncorrelated = partitions.stream()
.map(predicates -> predicates.stream().filter(p -> !commons.contains(p)).collect(Collectors.toList()))
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java
index 3caaf01759..3f9ff0d215 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/AdjustNullable.java
@@ -34,6 +34,7 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalFilter;
import org.apache.doris.nereids.trees.plans.logical.LogicalPlan;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import java.util.List;
@@ -88,7 +89,7 @@ public class AdjustNullable implements RewriteRuleFactory {
List<NamedExpression> newOutputs = updateExpressions(repeat.getOutputExpressions(), exprIdSlotMap);
List<List<Expression>> newGroupingSets = repeat.getGroupingSets().stream()
.map(l -> updateExpressions(l, exprIdSlotMap))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
return repeat.withGroupSetsAndOutput(newGroupingSets, newOutputs).recomputeLogicalProperties();
})),
RuleType.ADJUST_NULLABLE_ON_SET_OPERATION.build(logicalSetOperation().then(setOperation -> {
@@ -117,14 +118,14 @@ public class AdjustNullable implements RewriteRuleFactory {
Map<ExprId, Slot> exprIdSlotMap = collectChildrenOutputMap(sort);
List<OrderKey> newKeys = sort.getOrderKeys().stream()
.map(old -> old.withExpression(updateExpression(old.getExpr(), exprIdSlotMap)))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
return sort.withOrderKeys(newKeys).recomputeLogicalProperties();
})),
RuleType.ADJUST_NULLABLE_ON_TOP_N.build(logicalTopN().then(topN -> {
Map<ExprId, Slot> exprIdSlotMap = collectChildrenOutputMap(topN);
List<OrderKey> newKeys = topN.getOrderKeys().stream()
.map(old -> old.withExpression(updateExpression(old.getExpr(), exprIdSlotMap)))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
return topN.withOrderKeys(newKeys).recomputeLogicalProperties();
}))
);
@@ -135,11 +136,11 @@ public class AdjustNullable implements RewriteRuleFactory {
}
private <T extends Expression> List<T> updateExpressions(List<T> inputs, Map<ExprId, Slot> exprIdSlotMap) {
- return inputs.stream().map(i -> updateExpression(i, exprIdSlotMap)).collect(Collectors.toList());
+ return inputs.stream().map(i -> updateExpression(i, exprIdSlotMap)).collect(ImmutableList.toImmutableList());
}
private <T extends Expression> Set<T> updateExpressions(Set<T> inputs, Map<ExprId, Slot> exprIdSlotMap) {
- return inputs.stream().map(i -> updateExpression(i, exprIdSlotMap)).collect(Collectors.toSet());
+ return inputs.stream().map(i -> updateExpression(i, exprIdSlotMap)).collect(ImmutableSet.toImmutableSet());
}
private Map<ExprId, Slot> collectChildrenOutputMap(LogicalPlan plan) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ApplyPullFilterOnAgg.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ApplyPullFilterOnAgg.java
index fd31a14bdf..8998ba6afe 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ApplyPullFilterOnAgg.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ApplyPullFilterOnAgg.java
@@ -30,12 +30,12 @@ import org.apache.doris.nereids.util.ExpressionUtils;
import org.apache.doris.nereids.util.PlanUtils;
import org.apache.doris.nereids.util.Utils;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.stream.Collectors;
/**
* Merge the correlated predicate and agg in the filter under apply.
@@ -79,7 +79,9 @@ public class ApplyPullFilterOnAgg extends OneRewriteRuleFactory {
List<Expression> newGroupby = Utils.getCorrelatedSlots(correlatedPredicate,
apply.getCorrelationSlot());
newGroupby.addAll(agg.getGroupByExpressions());
- newAggOutput.addAll(newGroupby.stream().map(NamedExpression.class::cast).collect(Collectors.toList()));
+ newAggOutput.addAll(newGroupby.stream()
+ .map(NamedExpression.class::cast)
+ .collect(ImmutableList.toImmutableList()));
LogicalAggregate newAgg = new LogicalAggregate<>(
newGroupby, newAggOutput,
PlanUtils.filterOrSelf(ImmutableSet.copyOf(unCorrelatedPredicate), filter.child()));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateOrderByConstant.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateOrderByConstant.java
index 6ab3455192..59cb04abe6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateOrderByConstant.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/EliminateOrderByConstant.java
@@ -22,8 +22,9 @@ import org.apache.doris.nereids.rules.Rule;
import org.apache.doris.nereids.rules.RuleType;
import org.apache.doris.nereids.rules.rewrite.OneRewriteRuleFactory;
+import com.google.common.collect.ImmutableList;
+
import java.util.List;
-import java.util.stream.Collectors;
/**
* SELECT * FROM lineorder ORDER BY 'f' -> SELECT * FROM lineorder
@@ -37,7 +38,7 @@ public class EliminateOrderByConstant extends OneRewriteRuleFactory {
.getOrderKeys()
.stream()
.filter(k -> !(k.getExpr().isConstant()))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (orderKeysWithoutConst.isEmpty()) {
return sort.child();
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ExtractFilterFromCrossJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ExtractFilterFromCrossJoin.java
index 6b82bac2d0..f0adb815a4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ExtractFilterFromCrossJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/ExtractFilterFromCrossJoin.java
@@ -27,8 +27,9 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalJoin;
import org.apache.doris.nereids.util.ExpressionUtils;
import org.apache.doris.nereids.util.PlanUtils;
+import com.google.common.collect.ImmutableSet;
+
import java.util.Set;
-import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
@@ -44,7 +45,7 @@ public class ExtractFilterFromCrossJoin extends OneRewriteRuleFactory {
join.left(), join.right());
Set<Expression> predicates = Stream.concat(join.getHashJoinConjuncts().stream(),
join.getOtherJoinConjuncts().stream())
- .collect(Collectors.toSet());
+ .collect(ImmutableSet.toImmutableSet());
return PlanUtils.filterOrSelf(predicates, newJoin);
}).toRule(RuleType.EXTRACT_FILTER_FROM_JOIN);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MultiJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MultiJoin.java
index 9d1ecf84ab..3615827e07 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MultiJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/MultiJoin.java
@@ -34,7 +34,6 @@ import com.google.common.collect.ImmutableList.Builder;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* A MultiJoin represents a join of N inputs (NAry-Join).
@@ -113,7 +112,7 @@ public class MultiJoin extends AbstractLogicalPlan {
for (Plan child : children) {
builder.addAll(child.getOutput().stream()
.map(o -> o.withNullable(true))
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}
return builder.build();
}
@@ -124,7 +123,7 @@ public class MultiJoin extends AbstractLogicalPlan {
if (joinType.isRightOuterJoin()) {
builder.addAll(children.get(0).getOutput().stream()
.map(o -> o.withNullable(true))
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}
for (int i = 1; i < children.size(); i++) {
builder.addAll(children.get(i).getOutput());
@@ -142,7 +141,7 @@ public class MultiJoin extends AbstractLogicalPlan {
if (joinType.isLeftOuterJoin()) {
builder.addAll(children.get(arity() - 1).getOutput().stream()
.map(o -> o.withNullable(true))
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}
return builder.build();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
index 53667f1dec..d8a31543fa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneAggChildColumns.java
@@ -32,7 +32,6 @@ import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* prune its child output according to agg.
@@ -65,7 +64,7 @@ public class PruneAggChildColumns extends OneRewriteRuleFactory {
}
Set<Slot> aggInputSlots = agg.getInputSlots();
List<NamedExpression> prunedOutputs = childOutput.stream().filter(aggInputSlots::contains)
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (prunedOutputs.size() == agg.child().getOutput().size()) {
return agg;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneJoinChildrenColumns.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneJoinChildrenColumns.java
index 33dbc63057..f05271d32d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneJoinChildrenColumns.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneJoinChildrenColumns.java
@@ -73,15 +73,15 @@ public class PruneJoinChildrenColumns
.collect(Collectors.toSet());
List<NamedExpression> leftInputs = joinPlan.left().getOutput().stream()
- .filter(r -> exprIds.contains(r.getExprId())).collect(Collectors.toList());
+ .filter(r -> exprIds.contains(r.getExprId())).collect(ImmutableList.toImmutableList());
List<NamedExpression> rightInputs = joinPlan.right().getOutput().stream()
- .filter(r -> exprIds.contains(r.getExprId())).collect(Collectors.toList());
+ .filter(r -> exprIds.contains(r.getExprId())).collect(ImmutableList.toImmutableList());
if (leftInputs.isEmpty()) {
- leftInputs.add(ExpressionUtils.selectMinimumColumn(joinPlan.left().getOutput()));
+ leftInputs = ImmutableList.of(ExpressionUtils.selectMinimumColumn(joinPlan.left().getOutput()));
}
if (rightInputs.isEmpty()) {
- rightInputs.add(ExpressionUtils.selectMinimumColumn(joinPlan.right().getOutput()));
+ rightInputs = ImmutableList.of(ExpressionUtils.selectMinimumColumn(joinPlan.right().getOutput()));
}
Plan leftPlan = joinPlan.left();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneRepeatChildColumns.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneRepeatChildColumns.java
index 47631ea16d..02d3ef12af 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneRepeatChildColumns.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneRepeatChildColumns.java
@@ -28,7 +28,6 @@ import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* prune its child output according to repeat.
@@ -54,7 +53,7 @@ public class PruneRepeatChildColumns extends OneRewriteRuleFactory {
List<Slot> childOutput = repeat.child().getOutput();
Set<Slot> groupByInputSlots = repeat.getInputSlots();
List<NamedExpression> prunedOutputs = childOutput.stream().filter(groupByInputSlots::contains)
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
if (prunedOutputs.size() == repeat.child().getOutput().size()) {
return repeat;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneSortChildColumns.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneSortChildColumns.java
index d7210196d1..372d03f8d0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneSortChildColumns.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PruneSortChildColumns.java
@@ -25,7 +25,6 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalProject;
import org.apache.doris.nereids.trees.plans.logical.LogicalSort;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import java.util.Set;
import java.util.stream.Collectors;
@@ -50,7 +49,7 @@ public class PruneSortChildColumns extends AbstractPushDownProjectRule<LogicalSo
return sortPlan;
}
return sortPlan.withChildren(
- ImmutableList.of(new LogicalProject<>(Lists.newArrayList(required), sortPlan.child()))
+ ImmutableList.of(new LogicalProject<>(ImmutableList.copyOf(required), sortPlan.child()))
);
}
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownExpressionsInHashCondition.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownExpressionsInHashCondition.java
index e02d2dea6d..9a1d1fc392 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownExpressionsInHashCondition.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownExpressionsInHashCondition.java
@@ -40,7 +40,6 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* push down expression which is not slot reference
@@ -86,14 +85,14 @@ public class PushdownExpressionsInHashCondition extends OneRewriteRuleFactory {
join.getHashJoinConjuncts().stream()
.map(equalTo -> equalTo.withChildren(equalTo.children()
.stream().map(expr -> exprMap.get(expr).toSlot())
- .collect(Collectors.toList())))
- .collect(Collectors.toList()),
+ .collect(ImmutableList.toImmutableList())))
+ .collect(ImmutableList.toImmutableList()),
join.children().stream().map(
plan -> new LogicalProject<>(new ImmutableList.Builder<NamedExpression>()
- .addAll(iter.next().stream().map(expr -> exprMap.get(expr))
- .collect(Collectors.toList()))
+ .addAll(iter.next().stream().map(exprMap::get)
+ .collect(ImmutableList.toImmutableList()))
.addAll(getOutput(plan, join)).build(), plan))
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}).toRule(RuleType.PUSHDOWN_EXPRESSIONS_IN_HASH_CONDITIONS);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownFilterThroughSetOperation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownFilterThroughSetOperation.java
index a5af6c93e2..69ba69136f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownFilterThroughSetOperation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/PushdownFilterThroughSetOperation.java
@@ -29,12 +29,13 @@ import org.apache.doris.nereids.trees.plans.logical.LogicalSetOperation;
import org.apache.doris.nereids.trees.plans.logical.LogicalUnion;
import org.apache.doris.nereids.util.ExpressionUtils;
+import com.google.common.collect.ImmutableSet;
+
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import java.util.stream.Collectors;
/**
* Convert the expression in the filter into the output column corresponding to the child node and push it down.
@@ -59,7 +60,7 @@ public class PushdownFilterThroughSetOperation extends OneRewriteRuleFactory {
}
Set<Expression> newFilterPredicates = filter.getConjuncts().stream().map(conjunct ->
- ExpressionUtils.replace(conjunct, replaceMap)).collect(Collectors.toSet());
+ ExpressionUtils.replace(conjunct, replaceMap)).collect(ImmutableSet.toImmutableSet());
newChildren.add(new LogicalFilter<>(newFilterPredicates, child));
}
if (setOperation instanceof LogicalUnion && setOperation.getQualifier() == Qualifier.DISTINCT) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/LeafNode.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/LeafNode.java
index a40dffe14f..1b25f6fce2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/LeafNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/LeafNode.java
@@ -21,6 +21,7 @@ package org.apache.doris.nereids.trees;
* Abstract class for all tree node that have no child.
*/
public interface LeafNode<NODE_TYPE extends TreeNode<NODE_TYPE>> extends TreeNode<NODE_TYPE> {
+
@Override
default int arity() {
return 0;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/AggregateExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/AggregateExpression.java
index b88ff0d8bf..cfe647ed5f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/AggregateExpression.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/AggregateExpression.java
@@ -38,8 +38,8 @@ import java.util.Objects;
* aggregate.
*/
public class AggregateExpression extends Expression implements UnaryExpression {
- private final AggregateFunction function;
+ private final AggregateFunction function;
private final AggregateParam aggregateParam;
/** local aggregate */
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/CaseWhen.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/CaseWhen.java
index 2ebdc5cecd..0615b182be 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/CaseWhen.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/CaseWhen.java
@@ -18,6 +18,7 @@
package org.apache.doris.nereids.trees.expressions;
import org.apache.doris.nereids.exceptions.UnboundException;
+import org.apache.doris.nereids.trees.expressions.functions.ExpressionTrait;
import org.apache.doris.nereids.trees.expressions.visitor.ExpressionVisitor;
import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.util.TypeCoercionUtils;
@@ -29,7 +30,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import java.util.stream.Collectors;
+import java.util.stream.Stream;
/**
* The internal representation of
@@ -44,7 +45,7 @@ public class CaseWhen extends Expression {
private final Optional<Expression> defaultValue;
public CaseWhen(List<WhenClause> whenClauses) {
- super(whenClauses.toArray(new Expression[0]));
+ super((List) whenClauses);
this.whenClauses = ImmutableList.copyOf(Objects.requireNonNull(whenClauses));
defaultValue = Optional.empty();
}
@@ -66,11 +67,9 @@ public class CaseWhen extends Expression {
}
public List<DataType> dataTypesForCoercion() {
- List<DataType> result = whenClauses.stream().map(WhenClause::getDataType).collect(Collectors.toList());
- if (defaultValue.isPresent()) {
- result.add(defaultValue.get().getDataType());
- }
- return result;
+ return Stream.concat(whenClauses.stream(), defaultValue.map(Stream::of).orElseGet(Stream::empty))
+ .map(ExpressionTrait::getDataType)
+ .collect(ImmutableList.toImmutableList());
}
public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) {
@@ -83,7 +82,7 @@ public class CaseWhen extends Expression {
for (Expression child : children) {
DataType tempType = outputType;
outputType = TypeCoercionUtils.findTightestCommonType(null,
- outputType, child.getDataType()).orElseGet(() -> tempType);
+ outputType, child.getDataType()).orElse(tempType);
}
return outputType;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ExpressionEvaluator.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ExpressionEvaluator.java
index ef452e7d68..0eb013614a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ExpressionEvaluator.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/ExpressionEvaluator.java
@@ -38,6 +38,7 @@ import java.util.List;
*/
public enum ExpressionEvaluator {
INSTANCE;
+
private ImmutableMultimap<String, FunctionInvoker> functions;
ExpressionEvaluator() {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java
index 108bc481cd..e378b580ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/SlotReference.java
@@ -73,7 +73,7 @@ public class SlotReference extends Slot {
this.exprId = exprId;
this.name = name;
this.dataType = dataType;
- this.qualifier = qualifier;
+ this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
this.nullable = nullable;
this.column = column;
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/IntersectCount.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/IntersectCount.java
index 4f83b6cdaf..fcb4ae3609 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/IntersectCount.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/IntersectCount.java
@@ -29,9 +29,9 @@ import org.apache.doris.nereids.types.DataType;
import org.apache.doris.nereids.util.ExpressionUtils;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import java.util.List;
-import java.util.stream.Collectors;
/**
* AggregateFunction 'intersect_count'. This class is generated by GenerateFunction.
@@ -39,10 +39,9 @@ import java.util.stream.Collectors;
public class IntersectCount extends AggregateFunction
implements ExplicitlyCastableSignature, AlwaysNotNullable, BitmapIntersectFunction {
- public static final List<FunctionSignature> SIGNATURES = DataType.nonNullNonCharTypes()
- .stream()
+ public static final List<FunctionSignature> SIGNATURES = DataType.nonNullNonCharTypes().stream()
.map(type -> FunctionSignature.ret(BigIntType.INSTANCE).varArgs(BitmapType.INSTANCE, type, type))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
/**
* constructor with 3 or more arguments.
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctCount.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctCount.java
index 151ec4f3a8..72a26d288e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctCount.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/MultiDistinctCount.java
@@ -32,7 +32,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.List;
-import java.util.stream.Collectors;
/** MultiDistinctCount */
public class MultiDistinctCount extends AggregateFunction
@@ -48,13 +47,13 @@ public class MultiDistinctCount extends AggregateFunction
public MultiDistinctCount(Expression arg0, Expression... varArgs) {
super("multi_distinct_count", true, ExpressionUtils.mergeArguments(arg0, varArgs).stream()
.map(arg -> arg.getDataType() instanceof DateLikeType ? new Cast(arg, BigIntType.INSTANCE) : arg)
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}
public MultiDistinctCount(boolean distinct, Expression arg0, Expression... varArgs) {
- super("multi_distinct_count", true, ExpressionUtils.mergeArguments(arg0, varArgs).stream()
+ super("multi_distinct_count", distinct, ExpressionUtils.mergeArguments(arg0, varArgs).stream()
.map(arg -> arg.getDataType() instanceof DateLikeType ? new Cast(arg, BigIntType.INSTANCE) : arg)
- .collect(Collectors.toList()));
+ .collect(ImmutableList.toImmutableList()));
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java
index 481b292e03..8967891521 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/GroupPlan.java
@@ -36,6 +36,7 @@ import java.util.Optional;
* as a place-holder when do match root.
*/
public class GroupPlan extends LogicalLeaf {
+
private final Group group;
public GroupPlan(Group group) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/LeafPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/LeafPlan.java
index f07bd6a556..64cec035cd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/LeafPlan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/LeafPlan.java
@@ -27,6 +27,7 @@ import java.util.List;
* Abstract class for all plan node that have no child.
*/
public interface LeafPlan extends Plan, LeafNode<Plan> {
+
@Override
default Plan withChildren(List<Plan> children) {
Preconditions.checkArgument(children.isEmpty());
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PreAggStatus.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PreAggStatus.java
index 4676666987..70d2a90db9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PreAggStatus.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/PreAggStatus.java
@@ -23,6 +23,7 @@ import java.util.function.Supplier;
* Pre-aggregate status for OLAP scan table.
*/
public class PreAggStatus {
+
private enum Status {
ON, OFF
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/RelationId.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/RelationId.java
index 834bc19e48..ac2ab3233b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/RelationId.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/RelationId.java
@@ -26,6 +26,7 @@ import java.util.Objects;
* relation id
*/
public class RelationId extends Id<RelationId> {
+
public RelationId(int id) {
super(id);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/UnaryPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/UnaryPlan.java
index a392a5ff1a..cbb7686b62 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/UnaryPlan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/UnaryPlan.java
@@ -22,6 +22,5 @@ import org.apache.doris.nereids.trees.UnaryNode;
/**
* interface for all plan node that have one child.
*/
-public interface UnaryPlan<CHILD_TYPE extends Plan>
- extends Plan, UnaryNode<Plan, CHILD_TYPE> {
+public interface UnaryPlan<CHILD_TYPE extends Plan> extends Plan, UnaryNode<Plan, CHILD_TYPE> {
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Aggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Aggregate.java
index 7163d86106..f5e3e14772 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Aggregate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Aggregate.java
@@ -38,7 +38,7 @@ public interface Aggregate<CHILD_TYPE extends Plan> extends UnaryPlan<CHILD_TYPE
List<NamedExpression> getOutputExpressions();
- Aggregate withAggOutput(List<NamedExpression> newOutput);
+ Aggregate<CHILD_TYPE> withAggOutput(List<NamedExpression> newOutput);
@Override
Aggregate<Plan> withChildren(List<Plan> children);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Project.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Project.java
index 5ee0370134..9724d0e8ca 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Project.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/algebra/Project.java
@@ -30,7 +30,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@@ -84,7 +83,7 @@ public interface Project {
return thisProjectExpressions.stream()
.map(e -> ExpressionReplacer.INSTANCE.replace(e, bottomAliasMap))
.map(NamedExpression.class::cast)
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
}
/**
@@ -130,7 +129,7 @@ public interface Project {
public Expression replace(Expression expr, Map<Expression, Expression> substitutionMap) {
if (expr instanceof SlotReference) {
- Slot ref = ((SlotReference) expr).withQualifier(Collections.emptyList());
+ Slot ref = ((SlotReference) expr).withQualifier(ImmutableList.of());
return substitutionMap.getOrDefault(ref, expr);
}
return visit(expr, substitutionMap);
@@ -155,13 +154,13 @@ public interface Project {
// case 1:
Expression c = expr.child(0);
// Alias doesn't contain qualifier
- Slot ref = ((SlotReference) c).withQualifier(Collections.emptyList());
+ Slot ref = ((SlotReference) c).withQualifier(ImmutableList.of());
if (substitutionMap.containsKey(ref)) {
return expr.withChildren(substitutionMap.get(ref).children());
}
} else if (expr instanceof SlotReference) {
// case 2:
- Slot ref = ((SlotReference) expr).withQualifier(Collections.emptyList());
+ Slot ref = ((SlotReference) expr).withQualifier(ImmutableList.of());
if (substitutionMap.containsKey(ref)) {
Alias res = (Alias) substitutionMap.get(ref);
return res.child();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java
index 8aeb5df235..b844c7eafa 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAggregate.java
@@ -50,7 +50,8 @@ import java.util.Optional;
* Note: In general, the output of agg is a subset of the group by column plus aggregate column.
* In special cases. this relationship does not hold. for example, select k1+1, sum(v1) from table group by k1.
*/
-public class LogicalAggregate<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE>
+public class LogicalAggregate<CHILD_TYPE extends Plan>
+ extends LogicalUnary<CHILD_TYPE>
implements Aggregate<CHILD_TYPE> {
private final boolean normalized;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java
index 939e21a428..0452ae29dc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalApply.java
@@ -44,8 +44,9 @@ import java.util.Optional;
*/
public class LogicalApply<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends Plan>
extends LogicalBinary<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> {
+
// correlation column
- private final ImmutableList<Expression> correlationSlot;
+ private final List<Expression> correlationSlot;
// original subquery
private final SubqueryExpr subqueryExpr;
// correlation Conjunction
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java
index 8babd612bf..117ea9423d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalAssertNumRows.java
@@ -41,6 +41,7 @@ import java.util.Optional;
* The cancelled reason will be reported by Backend and displayed back to the user.
*/
public class LogicalAssertNumRows<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> {
+
private final AssertNumRowsElement assertNumRowsElement;
public LogicalAssertNumRows(AssertNumRowsElement assertNumRowsElement, CHILD_TYPE child) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalBinary.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalBinary.java
index 827c3c9020..2e79b453e6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalBinary.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalBinary.java
@@ -36,15 +36,6 @@ public abstract class LogicalBinary<
extends AbstractLogicalPlan
implements BinaryPlan<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> {
- public LogicalBinary(PlanType type, LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) {
- super(type, Optional.empty(), leftChild, rightChild);
- }
-
- public LogicalBinary(PlanType type, Optional<LogicalProperties> logicalProperties,
- LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) {
- super(type, logicalProperties, leftChild, rightChild);
- }
-
public LogicalBinary(PlanType type, Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties, LEFT_CHILD_TYPE leftChild,
RIGHT_CHILD_TYPE rightChild) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTE.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTE.java
index f5976c0091..505cd7114c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTE.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalCTE.java
@@ -27,8 +27,8 @@ import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
import org.apache.doris.nereids.util.Utils;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -47,7 +47,7 @@ public class LogicalCTE<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE
public LogicalCTE(List<LogicalSubQueryAlias<Plan>> aliasQueries, Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties, CHILD_TYPE child) {
super(PlanType.LOGICAL_CTE, groupExpression, logicalProperties, child);
- this.aliasQueries = aliasQueries;
+ this.aliasQueries = ImmutableList.copyOf(Objects.requireNonNull(aliasQueries, "aliasQueries can not be null"));
}
public List<LogicalSubQueryAlias<Plan>> getAliasQueries() {
@@ -111,7 +111,7 @@ public class LogicalCTE<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE
@Override
public List<Expression> getExpressions() {
- return Collections.emptyList();
+ return ImmutableList.of();
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java
index ebbefe257f..e686cbe475 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java
@@ -40,7 +40,8 @@ import java.util.Optional;
* select * from tbl limit 0
*/
public class LogicalEmptyRelation extends LogicalLeaf implements EmptyRelation {
- private final ImmutableList<? extends NamedExpression> projects;
+
+ private final List<? extends NamedExpression> projects;
public LogicalEmptyRelation(List<? extends NamedExpression> projects) {
this(projects, Optional.empty(), Optional.empty());
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
index 43152b9fd6..a7bf18eb88 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFileScan.java
@@ -26,7 +26,6 @@ import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
import org.apache.doris.nereids.util.Utils;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Optional;
@@ -46,10 +45,6 @@ public class LogicalFileScan extends LogicalRelation {
groupExpression, logicalProperties);
}
- public LogicalFileScan(RelationId id, ExternalTable table) {
- this(id, table, ImmutableList.of());
- }
-
public LogicalFileScan(RelationId id, ExternalTable table, List<String> qualifier) {
this(id, table, qualifier, Optional.empty(), Optional.empty());
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java
index 1c6525377e..e0f312f65b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalFilter.java
@@ -33,7 +33,6 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -45,6 +44,7 @@ import java.util.stream.Stream;
* Logical filter plan.
*/
public class LogicalFilter<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> implements Filter {
+
private final Set<Expression> conjuncts;
private final boolean singleTableExpressionExtracted;
@@ -94,7 +94,7 @@ public class LogicalFilter<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_T
}
}).collect(Collectors.toList());
}
- return Collections.emptyList();
+ return ImmutableList.of();
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
index 2897fa6402..aa01206638 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
@@ -39,13 +39,13 @@ import com.google.common.collect.Lists;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Logical join plan.
*/
public class LogicalJoin<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends Plan>
extends LogicalBinary<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> implements Join {
+
private final JoinType joinType;
private final List<Expression> otherJoinConjuncts;
private final List<Expression> hashJoinConjuncts;
@@ -154,10 +154,10 @@ public class LogicalJoin<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends
public List<Slot> computeOutput() {
List<Slot> newLeftOutput = left().getOutput().stream().map(o -> o.withNullable(true))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
List<Slot> newRightOutput = right().getOutput().stream().map(o -> o.withNullable(true))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
switch (joinType) {
case LEFT_SEMI_JOIN:
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLeaf.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLeaf.java
index 56a0301735..56101773ee 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLeaf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLeaf.java
@@ -31,14 +31,6 @@ import java.util.Optional;
*/
public abstract class LogicalLeaf extends AbstractLogicalPlan implements LeafPlan {
- public LogicalLeaf(PlanType nodeType) {
- super(nodeType);
- }
-
- public LogicalLeaf(PlanType nodeType, Optional<LogicalProperties> logicalProperties) {
- super(nodeType, logicalProperties);
- }
-
public LogicalLeaf(PlanType nodeType, Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties) {
super(nodeType, groupExpression, logicalProperties);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
index 48f94727d7..75ff5f1ea9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalLimit.java
@@ -43,9 +43,8 @@ import java.util.Optional;
* limit: 10
* offset 100
*/
-public class LogicalLimit<CHILD_TYPE extends Plan>
- extends LogicalUnary<CHILD_TYPE>
- implements Limit {
+public class LogicalLimit<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> implements Limit {
+
private final long limit;
private final long offset;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java
index 59b8ef5315..577ff807cc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOlapScan.java
@@ -42,7 +42,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -81,7 +80,7 @@ public class LogicalOlapScan extends LogicalRelation implements CatalogRelation,
/**
* Selected tablet ids to read data from.
*/
- private final ImmutableList<Long> selectedTabletIds;
+ private final List<Long> selectedTabletIds;
/**
* Status to indicate tablets are pruned or not.
@@ -98,7 +97,7 @@ public class LogicalOlapScan extends LogicalRelation implements CatalogRelation,
private final boolean partitionPruned;
private final List<Long> manuallySpecifiedPartitions;
- private final ImmutableList<Long> selectedPartitionIds;
+ private final List<Long> selectedPartitionIds;
public LogicalOlapScan(RelationId id, OlapTable table) {
this(id, table, ImmutableList.of());
@@ -108,7 +107,7 @@ public class LogicalOlapScan extends LogicalRelation implements CatalogRelation,
this(id, table, qualifier, Optional.empty(), Optional.empty(),
table.getPartitionIds(), false,
ImmutableList.of(), false,
- -1, false, PreAggStatus.on(), Collections.emptyList());
+ -1, false, PreAggStatus.on(), ImmutableList.of());
}
public LogicalOlapScan(RelationId id, OlapTable table, List<String> qualifier, List<Long> specifiedPartitions) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
index 8f01428d8a..3380288e98 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalOneRowRelation.java
@@ -40,7 +40,8 @@ import java.util.Optional;
* e.g. select 100, 'value'
*/
public class LogicalOneRowRelation extends LogicalLeaf implements OneRowRelation {
- private final ImmutableList<NamedExpression> projects;
+
+ private final List<NamedExpression> projects;
private final boolean buildUnionNode;
public LogicalOneRowRelation(List<NamedExpression> projects) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
index c5cc6c248f..e643b640e4 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalProject.java
@@ -33,7 +33,6 @@ import org.apache.doris.nereids.util.Utils;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -52,7 +51,7 @@ public class LogicalProject<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_
private final boolean isDistinct;
public LogicalProject(List<NamedExpression> projects, CHILD_TYPE child) {
- this(projects, Collections.emptyList(), true, child, false);
+ this(projects, ImmutableList.of(), true, child, false);
}
public LogicalProject(List<NamedExpression> projects, List<NamedExpression> excepts, CHILD_TYPE child) {
@@ -65,7 +64,7 @@ public class LogicalProject<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_
}
public LogicalProject(List<NamedExpression> projects, CHILD_TYPE child, boolean isDistinct) {
- this(projects, Collections.emptyList(), true, child, isDistinct);
+ this(projects, ImmutableList.of(), true, child, isDistinct);
}
public LogicalProject(List<NamedExpression> projects, List<NamedExpression> excepts, CHILD_TYPE child,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java
index f959ecca42..2b68913e4f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRelation.java
@@ -32,7 +32,6 @@ import org.apache.doris.nereids.util.Utils;
import com.google.common.collect.ImmutableList;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -42,19 +41,17 @@ import java.util.Optional;
*/
public abstract class LogicalRelation extends LogicalLeaf implements Scan {
+ protected final RelationId id;
protected final TableIf table;
protected final ImmutableList<String> qualifier;
- protected final RelationId id;
-
public LogicalRelation(RelationId id, PlanType type, TableIf table, List<String> qualifier) {
this(id, type, table, qualifier, Optional.empty(), Optional.empty());
}
public LogicalRelation(RelationId id, PlanType type, Optional<GroupExpression> groupExpression,
Optional<LogicalProperties> logicalProperties) {
- this(id, type, new OlapTable(), Collections.emptyList(), groupExpression,
- logicalProperties);
+ this(id, type, new OlapTable(), ImmutableList.of(), groupExpression, logicalProperties);
}
/**
@@ -66,9 +63,9 @@ public abstract class LogicalRelation extends LogicalLeaf implements Scan {
public LogicalRelation(RelationId id, PlanType type, TableIf table, List<String> qualifier,
Optional<GroupExpression> groupExpression, Optional<LogicalProperties> logicalProperties) {
super(type, groupExpression, logicalProperties);
+ this.id = id;
this.table = Objects.requireNonNull(table, "table can not be null");
this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
- this.id = id;
}
@Override
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java
index bc4f18d83f..00344dddbe 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalRepeat.java
@@ -40,8 +40,7 @@ import java.util.Optional;
/**
* LogicalRepeat.
*/
-public class LogicalRepeat<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE>
- implements Repeat<CHILD_TYPE> {
+public class LogicalRepeat<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> implements Repeat<CHILD_TYPE> {
// max num of distinct sets in grouping sets clause
public static final int MAX_GROUPING_SETS_NUM = 64;
@@ -68,7 +67,7 @@ public class LogicalRepeat<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_T
super(PlanType.LOGICAL_REPEAT, groupExpression, logicalProperties, child);
this.groupingSets = Objects.requireNonNull(groupingSets, "groupingSets can not be null")
.stream()
- .map(groupingSet -> ImmutableList.copyOf(groupingSet))
+ .map(ImmutableList::copyOf)
.collect(ImmutableList.toImmutableList());
this.outputExpressions = ImmutableList.copyOf(
Objects.requireNonNull(outputExpressions, "outputExpressions can not be null"));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSchemaScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSchemaScan.java
index 402da0da48..c373f66aa2 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSchemaScan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSchemaScan.java
@@ -39,16 +39,13 @@ import java.util.Optional;
* LogicalSchemaScan.
*/
public class LogicalSchemaScan extends LogicalRelation implements Scan {
- public LogicalSchemaScan(RelationId id,
- TableIf table,
- List<String> qualifier) {
+
+ public LogicalSchemaScan(RelationId id, TableIf table, List<String> qualifier) {
super(id, PlanType.LOGICAL_SCHEMA_SCAN, table, qualifier);
}
- public LogicalSchemaScan(RelationId id,
- TableIf table,
- List<String> qualifier, Optional<GroupExpression> groupExpression,
- Optional<LogicalProperties> logicalProperties) {
+ public LogicalSchemaScan(RelationId id, TableIf table, List<String> qualifier,
+ Optional<GroupExpression> groupExpression, Optional<LogicalProperties> logicalProperties) {
super(id, PlanType.LOGICAL_SCHEMA_SCAN, table, qualifier, groupExpression, logicalProperties);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java
index 93060ae4ef..db2c3694b0 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSelectHint.java
@@ -41,7 +41,8 @@ import java.util.stream.Collectors;
* e.g. LogicalSelectHint (set_var(query_timeout='1800', exec_mem_limit='2147483648'))
*/
public class LogicalSelectHint<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> {
- private final ImmutableMap<String, SelectHint> hints;
+
+ private final Map<String, SelectHint> hints;
public LogicalSelectHint(Map<String, SelectHint> hints, CHILD_TYPE child) {
this(hints, Optional.empty(), Optional.empty(), child);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java
index 30b4fc5df5..1a9cbe0dad 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSubQueryAlias.java
@@ -40,8 +40,8 @@ import java.util.Optional;
* @param <CHILD_TYPE> param
*/
public class LogicalSubQueryAlias<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> {
- private final List<String> qualifier;
+ private final List<String> qualifier;
private final Optional<List<String>> columnAliases;
public LogicalSubQueryAlias(String tableAlias, CHILD_TYPE child) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java
index 8d89fcf159..905df45dc5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTVFRelation.java
@@ -33,6 +33,7 @@ import java.util.Optional;
/** LogicalTableValuedFunctionRelation */
public class LogicalTVFRelation extends LogicalRelation implements TVFRelation {
+
private final TableValuedFunction function;
public LogicalTVFRelation(RelationId id, TableValuedFunction function) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java
index b3d28d591e..da78e27cef 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalTopN.java
@@ -40,7 +40,7 @@ import java.util.Optional;
*/
public class LogicalTopN<CHILD_TYPE extends Plan> extends LogicalUnary<CHILD_TYPE> implements TopN {
- private final ImmutableList<OrderKey> orderKeys;
+ private final List<OrderKey> orderKeys;
private final int limit;
private final int offset;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnion.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnion.java
index 7d27b63608..aa9a9db21e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnion.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalUnion.java
@@ -33,6 +33,7 @@ import java.util.Optional;
* Logical Union.
*/
public class LogicalUnion extends LogicalSetOperation {
+
// When the union is DISTINCT, an additional LogicalAggregation needs to be created,
// so add this flag to judge whether agg has been created to avoid repeated creation
private final boolean hasBuildAgg;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/RelationUtil.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/RelationUtil.java
index 6e23637659..223aa4f24b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/RelationUtil.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/RelationUtil.java
@@ -27,6 +27,7 @@ import com.google.common.annotations.VisibleForTesting;
* relation util
*/
public class RelationUtil {
+
// for test only
private static StatementContext statementContext = new StatementContext();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/UsingJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/UsingJoin.java
index 8a9d7af752..a7c1484e4c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/UsingJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/UsingJoin.java
@@ -35,7 +35,6 @@ import org.apache.commons.collections.CollectionUtils;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* select col1 from t1 join t2 using(col1);
@@ -70,10 +69,10 @@ public class UsingJoin<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends Pl
public List<Slot> computeOutput() {
List<Slot> newLeftOutput = left().getOutput().stream().map(o -> o.withNullable(true))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
List<Slot> newRightOutput = right().getOutput().stream().map(o -> o.withNullable(true))
- .collect(Collectors.toList());
+ .collect(ImmutableList.toImmutableList());
switch (joinType) {
case LEFT_SEMI_JOIN:
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
index 38bad41ce4..d1127a4647 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalJoin.java
@@ -45,16 +45,15 @@ public abstract class AbstractPhysicalJoin<
LEFT_CHILD_TYPE extends Plan,
RIGHT_CHILD_TYPE extends Plan>
extends PhysicalBinary<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> implements Join {
- protected final JoinType joinType;
-
- protected final ImmutableList<Expression> hashJoinConjuncts;
-
- protected final ImmutableList<Expression> otherJoinConjuncts;
- protected boolean shouldTranslateOutput = true;
+ protected final JoinType joinType;
+ protected final List<Expression> hashJoinConjuncts;
+ protected final List<Expression> otherJoinConjuncts;
protected final JoinHint hint;
+ // use for translate only
protected final List<Expression> filterConjuncts = Lists.newArrayList();
+ protected boolean shouldTranslateOutput = true;
/**
* Constructor of PhysicalJoin.
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java
index 82cf0a4238..0ef4002699 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/AbstractPhysicalSort.java
@@ -38,7 +38,7 @@ import java.util.Optional;
*/
public abstract class AbstractPhysicalSort<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_TYPE> implements Sort {
- protected final ImmutableList<OrderKey> orderKeys;
+ protected final List<OrderKey> orderKeys;
/**
* Constructor of AbstractPhysicalSort.
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java
index 15eb6b2def..e9f435c225 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAssertNumRows.java
@@ -40,6 +40,7 @@ import java.util.Optional;
* Physical assertNumRows.
*/
public class PhysicalAssertNumRows<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_TYPE> {
+
private final AssertNumRowsElement assertNumRowsElement;
public PhysicalAssertNumRows(AssertNumRowsElement assertNumRowsElement,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalBinary.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalBinary.java
index 03e5719bef..cefa39c1c6 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalBinary.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalBinary.java
@@ -31,11 +31,10 @@ import javax.annotation.Nullable;
/**
* Abstract class for all physical plan that have two children.
*/
-public abstract class PhysicalBinary<
- LEFT_CHILD_TYPE extends Plan,
- RIGHT_CHILD_TYPE extends Plan>
+public abstract class PhysicalBinary<LEFT_CHILD_TYPE extends Plan, RIGHT_CHILD_TYPE extends Plan>
extends AbstractPhysicalPlan
implements BinaryPlan<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> {
+
public PhysicalBinary(PlanType type, Optional<GroupExpression> groupExpression,
LogicalProperties logicalProperties, LEFT_CHILD_TYPE leftChild,
RIGHT_CHILD_TYPE rightChild) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java
index 89b6ceeaa1..af01535c24 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalEmptyRelation.java
@@ -42,7 +42,8 @@ import java.util.Optional;
* select * from tbl limit 0
*/
public class PhysicalEmptyRelation extends PhysicalLeaf implements EmptyRelation {
- private final ImmutableList<? extends NamedExpression> projects;
+
+ private final List<? extends NamedExpression> projects;
public PhysicalEmptyRelation(List<? extends NamedExpression> projects, LogicalProperties logicalProperties) {
this(projects, Optional.empty(), logicalProperties, null, null);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java
index 6a3c22a8de..443c9f2c8c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalFilter.java
@@ -41,6 +41,7 @@ import java.util.Set;
* Physical filter plan.
*/
public class PhysicalFilter<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_TYPE> implements Filter {
+
private final Set<Expression> conjuncts;
public PhysicalFilter(Set<Expression> conjuncts, LogicalProperties logicalProperties, CHILD_TYPE child) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
index 2ce6ea75fd..ba66df6959 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
@@ -42,6 +42,7 @@ public class PhysicalHashJoin<
LEFT_CHILD_TYPE extends Plan,
RIGHT_CHILD_TYPE extends Plan>
extends AbstractPhysicalJoin<LEFT_CHILD_TYPE, RIGHT_CHILD_TYPE> {
+
public PhysicalHashJoin(
JoinType joinType,
List<Expression> hashJoinConjuncts,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLeaf.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLeaf.java
index 5ca0028d17..f58e4600a9 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLeaf.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLeaf.java
@@ -31,6 +31,7 @@ import javax.annotation.Nullable;
* Abstract class for all physical plan that have no child.
*/
public abstract class PhysicalLeaf extends AbstractPhysicalPlan implements LeafPlan {
+
public PhysicalLeaf(PlanType type, Optional<GroupExpression> groupExpression, LogicalProperties logicalProperties) {
super(type, groupExpression, logicalProperties);
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java
index e5bdb40dd2..dfab80443c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalLimit.java
@@ -39,8 +39,8 @@ import java.util.Optional;
* Physical limit plan
*/
public class PhysicalLimit<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_TYPE> implements Limit {
- private final long limit;
+ private final long limit;
private final long offset;
public PhysicalLimit(long limit, long offset,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java
index 2910e72718..08e27e9667 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOlapScan.java
@@ -40,6 +40,7 @@ import java.util.Optional;
* Physical olap scan plan.
*/
public class PhysicalOlapScan extends PhysicalRelation implements OlapScan {
+
private final OlapTable olapTable;
private final DistributionSpec distributionSpec;
private final long selectedIndexId;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java
index ed59190807..4e146e461a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalOneRowRelation.java
@@ -40,7 +40,8 @@ import java.util.Optional;
* e.g. select 100, 'value'
*/
public class PhysicalOneRowRelation extends PhysicalLeaf implements OneRowRelation {
- private final ImmutableList<NamedExpression> projects;
+
+ private final List<NamedExpression> projects;
private final boolean buildUnionNode;
public PhysicalOneRowRelation(List<NamedExpression> projects, boolean buildUnionNode,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalPlan.java
index ca6ce10668..7ea66a8b60 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalPlan.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalPlan.java
@@ -25,6 +25,7 @@ import org.apache.doris.statistics.StatsDeriveResult;
* interface for all physical plan.
*/
public interface PhysicalPlan extends Plan {
+
PhysicalProperties getPhysicalProperties();
PhysicalPlan withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
index 269f688466..7aaaf0a508 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
@@ -41,7 +41,7 @@ import java.util.Optional;
*/
public class PhysicalProject<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD_TYPE> implements Project {
- private final ImmutableList<NamedExpression> projects;
+ private final List<NamedExpression> projects;
public PhysicalProject(List<NamedExpression> projects, LogicalProperties logicalProperties, CHILD_TYPE child) {
this(projects, Optional.empty(), logicalProperties, child);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java
index 81006a73e0..a73b20625c 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRelation.java
@@ -38,9 +38,8 @@ import java.util.Optional;
*/
public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
- protected final ImmutableList<String> qualifier;
-
protected final RelationId id;
+ protected final ImmutableList<String> qualifier;
/**
* Constructor for PhysicalRelation.
@@ -48,8 +47,8 @@ public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
public PhysicalRelation(RelationId id, PlanType type, List<String> qualifier,
Optional<GroupExpression> groupExpression, LogicalProperties logicalProperties) {
super(type, groupExpression, logicalProperties);
- this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
this.id = id;
+ this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
}
/**
@@ -59,8 +58,8 @@ public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
Optional<GroupExpression> groupExpression, LogicalProperties logicalProperties,
PhysicalProperties physicalProperties, StatsDeriveResult statsDeriveResult) {
super(type, groupExpression, logicalProperties, physicalProperties, statsDeriveResult);
- this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
this.id = id;
+ this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
}
public List<String> getQualifier() {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRepeat.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRepeat.java
index 6ad934cf22..c58d2d8c09 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRepeat.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalRepeat.java
@@ -58,7 +58,7 @@ public class PhysicalRepeat<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD
super(PlanType.PHYSICAL_REPEAT, logicalProperties, child);
this.groupingSets = Objects.requireNonNull(groupingSets, "groupingSets can not be null")
.stream()
- .map(groupingSet -> ImmutableList.copyOf(groupingSet))
+ .map(ImmutableList::copyOf)
.collect(ImmutableList.toImmutableList());
this.outputExpressions = ImmutableList.copyOf(
Objects.requireNonNull(outputExpressions, "outputExpressions can not be null"));
@@ -74,7 +74,7 @@ public class PhysicalRepeat<CHILD_TYPE extends Plan> extends PhysicalUnary<CHILD
physicalProperties, statsDeriveResult, child);
this.groupingSets = Objects.requireNonNull(groupingSets, "groupingSets can not be null")
.stream()
- .map(groupingSet -> ImmutableList.copyOf(groupingSet))
+ .map(ImmutableList::copyOf)
.collect(ImmutableList.toImmutableList());
this.outputExpressions = ImmutableList.copyOf(
Objects.requireNonNull(outputExpressions, "outputExpressions can not be null"));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalSetOperation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalSetOperation.java
index f8c86ac781..5dbe3a57db 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalSetOperation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalSetOperation.java
@@ -40,6 +40,7 @@ import java.util.Optional;
* Physical SetOperation.
*/
public abstract class PhysicalSetOperation extends AbstractPhysicalPlan implements SetOperation {
+
protected final Qualifier qualifier;
public PhysicalSetOperation(PlanType planType,
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalStorageLayerAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalStorageLayerAggregate.java
index 461266e440..221b4b19cf 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalStorageLayerAggregate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalStorageLayerAggregate.java
@@ -40,6 +40,7 @@ import java.util.Optional;
/** PhysicalStorageLayerAggregate */
public class PhysicalStorageLayerAggregate extends PhysicalRelation {
+
private final PhysicalRelation relation;
private final PushDownAggOp aggOp;
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTVFRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTVFRelation.java
index 6074cba757..5e5a832786 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTVFRelation.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTVFRelation.java
@@ -36,6 +36,7 @@ import java.util.Optional;
/** PhysicalTableValuedFunctionRelation */
public class PhysicalTVFRelation extends PhysicalRelation implements TVFRelation {
+
private final TableValuedFunction function;
public PhysicalTVFRelation(RelationId id, TableValuedFunction function, LogicalProperties logicalProperties) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/RuntimeFilter.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/RuntimeFilter.java
index 326bc6b634..8b80859e73 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/RuntimeFilter.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/RuntimeFilter.java
@@ -26,18 +26,11 @@ import org.apache.doris.thrift.TRuntimeFilterType;
*/
public class RuntimeFilter {
- private final Slot srcSlot;
-
- private Slot targetSlot;
-
private final RuntimeFilterId id;
-
private final TRuntimeFilterType type;
-
+ private final Slot srcSlot;
+ private Slot targetSlot;
private final int exprOrder;
-
- private boolean finalized = false;
-
private PhysicalHashJoin builderNode;
/**
@@ -76,8 +69,4 @@ public class RuntimeFilter {
public PhysicalHashJoin getBuilderNode() {
return builderNode;
}
-
- public void setFinalized() {
- this.finalized = true;
- }
}
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java
index 7e301cc174..9b8c6f0d2a 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/JoinUtils.java
@@ -303,7 +303,7 @@ public class JoinUtils {
return e;
}
})
- ).collect(Collectors.toList());
+ ).collect(ImmutableList.toImmutableList());
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org