newProjects = Lists.newArrayList();
newProjects.addAll(project.getProjects());
- filter.child().getOutput()
- .stream().forEach(slot -> {
- if (!newProjects.contains(slot)) {
- newProjects.add(slot);
- }
- });
+ filter.child().getOutput().forEach(slot -> {
+ if (!newProjects.contains(slot)) {
+ newProjects.add(slot);
+ }
+ });
LogicalProject newProject = new LogicalProject<>(newProjects, filter.child());
LogicalFilter newFilter = new LogicalFilter<>(filter.getPredicates(), newProject);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/NormalizeAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/NormalizeAggregate.java
index e1a2a832d3..51ea90a47d 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/NormalizeAggregate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/logical/NormalizeAggregate.java
@@ -44,21 +44,21 @@ import java.util.stream.Collectors;
* normalize aggregate's group keys and AggregateFunction's child to SlotReference
* and generate a LogicalProject top on LogicalAggregate to hold to order of aggregate output,
* since aggregate output's order could change when we do translate.
- *
+ *
* Apply this rule could simplify the processing of enforce and translate.
- *
+ *
* Original Plan:
* Aggregate(
* keys:[k1#1, K2#2 + 1],
* outputs:[k1#1, Alias(K2# + 1)#4, Alias(k1#1 + 1)#5, Alias(SUM(v1#3))#6,
* Alias(SUM(v1#3 + 1))#7, Alias(SUM(v1#3) + 1)#8])
- *
+ *
* After rule:
* Project(k1#1, Alias(SR#9)#4, Alias(k1#1 + 1)#5, Alias(SR#10))#6, Alias(SR#11))#7, Alias(SR#10 + 1)#8)
* +-- Aggregate(keys:[k1#1, SR#9], outputs:[k1#1, SR#9, Alias(SUM(v1#3))#10, Alias(SUM(v1#3 + 1))#11])
- * +-- Project(k1#1, Alias(K2#2 + 1)#9, v1#3)
- *
- * More example could get from UT {@link NormalizeAggregateTest}
+ * +-- Project(k1#1, Alias(K2#2 + 1)#9, v1#3)
+ *
+ * More example could get from UT {NormalizeAggregateTest}
*/
public class NormalizeAggregate extends OneRewriteRuleFactory {
@Override
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 626c74dab9..4721289b97 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
@@ -56,10 +56,10 @@ public class LogicalAggregate extends LogicalUnary groupByExpressions;
- private final List outputExpressions;
+ private final ImmutableList groupByExpressions;
+ private final ImmutableList outputExpressions;
// TODO: we should decide partition expression according to cost.
- private final Optional> partitionExpressions;
+ private final Optional> partitionExpressions;
// use for scenes containing distinct agg
// 1. If there is LOCAL only, LOCAL is the final phase
@@ -121,7 +121,7 @@ public class LogicalAggregate extends LogicalUnary extends LogicalUnary withChildren(List children) {
Preconditions.checkArgument(children.size() == 1);
- return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions,
+ return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions.map(List.class::cast),
disassembled, normalized, isFinalPhase, aggPhase, children.get(0));
}
@Override
public LogicalAggregate withGroupExpression(Optional groupExpression) {
- return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions,
+ return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions.map(List.class::cast),
disassembled, normalized, isFinalPhase, aggPhase,
groupExpression, Optional.of(getLogicalProperties()), children.get(0));
}
@Override
public LogicalAggregate withLogicalProperties(Optional logicalProperties) {
- return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions,
+ return new LogicalAggregate<>(groupByExpressions, outputExpressions, partitionExpressions.map(List.class::cast),
disassembled, normalized, isFinalPhase, aggPhase,
Optional.empty(), logicalProperties, children.get(0));
}
public LogicalAggregate withGroupByAndOutput(List groupByExprList,
List outputExpressionList) {
- return new LogicalAggregate<>(groupByExprList, outputExpressionList, partitionExpressions,
+ return new LogicalAggregate<>(groupByExprList, outputExpressionList, partitionExpressions.map(List.class::cast),
disassembled, normalized, isFinalPhase, aggPhase, child());
}
}
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 4bfd3f00de..4eda26ad00 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
@@ -45,7 +45,7 @@ import java.util.Optional;
public class LogicalApply
extends LogicalBinary {
// correlation column
- private final List correlationSlot;
+ private final ImmutableList 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/LogicalEmptyRelation.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalEmptyRelation.java
index b8b185f7fb..ebbefe257f 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,7 @@ import java.util.Optional;
* select * from tbl limit 0
*/
public class LogicalEmptyRelation extends LogicalLeaf implements EmptyRelation {
- private final List extends NamedExpression> projects;
+ private final ImmutableList 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/LogicalJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalJoin.java
index 2d844689f1..2904d1d7cd 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
@@ -45,8 +45,8 @@ import java.util.stream.Collectors;
public class LogicalJoin
extends LogicalBinary implements Join {
private final JoinType joinType;
- private final List otherJoinConjuncts;
- private final List hashJoinConjuncts;
+ private final ImmutableList otherJoinConjuncts;
+ private final ImmutableList hashJoinConjuncts;
// Use for top-to-down join reorder
private final JoinReorderContext joinReorderContext = new JoinReorderContext();
@@ -105,8 +105,8 @@ public class LogicalJoin getOtherJoinConjuncts() {
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 6e7be3703e..06007dda3e 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
@@ -18,7 +18,6 @@
package org.apache.doris.nereids.trees.plans.logical;
import org.apache.doris.catalog.OlapTable;
-import org.apache.doris.catalog.Partition;
import org.apache.doris.catalog.Table;
import org.apache.doris.nereids.memo.GroupExpression;
import org.apache.doris.nereids.properties.LogicalProperties;
@@ -32,7 +31,6 @@ import org.apache.doris.nereids.util.Utils;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import java.util.List;
@@ -45,10 +43,10 @@ import java.util.Optional;
public class LogicalOlapScan extends LogicalRelation {
private final long selectedIndexId;
- private final List selectedTabletId;
+ private final ImmutableList selectedTabletId;
private final boolean partitionPruned;
- private final List candidateIndexIds;
+ private final ImmutableList candidateIndexIds;
private final boolean indexSelected;
private final PreAggStatus preAggStatus;
@@ -80,12 +78,11 @@ public class LogicalOlapScan extends LogicalRelation {
// revisit this after rollup and materialized view selection are fully supported.
this.selectedIndexId = CollectionUtils.isEmpty(candidateIndexIds)
? getTable().getBaseIndexId() : candidateIndexIds.get(0);
- this.selectedTabletId = Lists.newArrayList();
- for (Partition partition : getTable().getAllPartitions()) {
- selectedTabletId.addAll(partition.getBaseIndex().getTabletIdsInOrder());
- }
+ this.selectedTabletId = getTable().getAllPartitions().stream()
+ .flatMap(partition -> partition.getBaseIndex().getTabletIdsInOrder().stream())
+ .collect(ImmutableList.toImmutableList());
this.partitionPruned = partitionPruned;
- this.candidateIndexIds = candidateIndexIds;
+ this.candidateIndexIds = ImmutableList.copyOf(candidateIndexIds);
this.indexSelected = indexSelected;
this.preAggStatus = preAggStatus;
}
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 fe99d21f6f..5b26472e9a 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,7 @@ import java.util.Optional;
* e.g. select 100, 'value'
*/
public class LogicalOneRowRelation extends LogicalLeaf implements OneRowRelation {
- private final List projects;
+ private final ImmutableList projects;
public LogicalOneRowRelation(List projects) {
this(projects, Optional.empty(), Optional.empty());
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 debc456bc0..f49a27da2c 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
@@ -40,7 +40,7 @@ import java.util.Optional;
*/
public class LogicalProject extends LogicalUnary implements Project {
- private final List projects;
+ private final ImmutableList projects;
public LogicalProject(List projects, CHILD_TYPE child) {
this(projects, Optional.empty(), Optional.empty(), 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 10a94bbc9e..f3fab310c4 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
@@ -42,8 +42,8 @@ import java.util.Optional;
public abstract class LogicalRelation extends LogicalLeaf implements Scan {
protected final Table table;
- protected final List qualifier;
- protected final List selectedPartitionIds;
+ protected final ImmutableList qualifier;
+ protected final ImmutableList selectedPartitionIds;
protected final RelationId id;
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 aeda4ac403..93060ae4ef 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,7 @@ import java.util.stream.Collectors;
* e.g. LogicalSelectHint (set_var(query_timeout='1800', exec_mem_limit='2147483648'))
*/
public class LogicalSelectHint extends LogicalUnary {
- private final Map hints;
+ private final ImmutableMap hints;
public LogicalSelectHint(Map 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/LogicalSort.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java
index d55cb58e79..299b7ed86f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/logical/LogicalSort.java
@@ -44,7 +44,7 @@ import java.util.Optional;
*/
public class LogicalSort extends LogicalUnary implements Sort {
- private final List orderKeys;
+ private final ImmutableList orderKeys;
public LogicalSort(List orderKeys, CHILD_TYPE child) {
this(orderKeys, Optional.empty(), Optional.empty(), child);
@@ -56,7 +56,7 @@ public class LogicalSort extends LogicalUnary orderKeys, Optional groupExpression,
Optional logicalProperties, CHILD_TYPE child) {
super(PlanType.LOGICAL_SORT, groupExpression, logicalProperties, child);
- this.orderKeys = Objects.requireNonNull(orderKeys, "orderKeys can not be null");
+ this.orderKeys = ImmutableList.copyOf(Objects.requireNonNull(orderKeys, "orderKeys can not be null"));
}
@Override
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 aab24fc2d0..7e10cb52c6 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 extends LogicalUnary implements TopN {
- private final List orderKeys;
+ private final ImmutableList orderKeys;
private final int limit;
private final int offset;
@@ -54,7 +54,7 @@ public class LogicalTopN extends LogicalUnary orderKeys, int limit, int offset, Optional groupExpression,
Optional logicalProperties, CHILD_TYPE child) {
super(PlanType.LOGICAL_TOP_N, groupExpression, logicalProperties, child);
- this.orderKeys = Objects.requireNonNull(orderKeys, "orderKeys can not be null");
+ this.orderKeys = ImmutableList.copyOf(Objects.requireNonNull(orderKeys, "orderKeys can not be null"));
this.limit = limit;
this.offset = offset;
}
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 1aa4834d28..d8ffec7266 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
@@ -28,6 +28,7 @@ import org.apache.doris.nereids.trees.plans.algebra.Join;
import org.apache.doris.nereids.util.ExpressionUtils;
import org.apache.doris.statistics.StatsDeriveResult;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
import java.util.List;
@@ -43,9 +44,9 @@ public abstract class AbstractPhysicalJoin<
extends PhysicalBinary implements Join {
protected final JoinType joinType;
- protected final List hashJoinConjuncts;
+ protected final ImmutableList hashJoinConjuncts;
- protected final List otherJoinConjuncts;
+ protected final ImmutableList otherJoinConjuncts;
/**
* Constructor of PhysicalJoin.
@@ -55,8 +56,8 @@ public abstract class AbstractPhysicalJoin<
LogicalProperties logicalProperties, LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) {
super(type, groupExpression, logicalProperties, leftChild, rightChild);
this.joinType = Objects.requireNonNull(joinType, "joinType can not be null");
- this.hashJoinConjuncts = hashJoinConjuncts;
- this.otherJoinConjuncts = Objects.requireNonNull(otherJoinConjuncts, "condition can not be null");
+ this.hashJoinConjuncts = ImmutableList.copyOf(hashJoinConjuncts);
+ this.otherJoinConjuncts = ImmutableList.copyOf(otherJoinConjuncts);
}
/**
@@ -68,8 +69,8 @@ public abstract class AbstractPhysicalJoin<
StatsDeriveResult statsDeriveResult, LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) {
super(type, groupExpression, logicalProperties, physicalProperties, statsDeriveResult, leftChild, rightChild);
this.joinType = Objects.requireNonNull(joinType, "joinType can not be null");
- this.hashJoinConjuncts = hashJoinConjuncts;
- this.otherJoinConjuncts = Objects.requireNonNull(otherJoinConjuncts, "condition can not be null");
+ this.hashJoinConjuncts = ImmutableList.copyOf(hashJoinConjuncts);
+ this.otherJoinConjuncts = ImmutableList.copyOf(otherJoinConjuncts);
}
public List getHashJoinConjuncts() {
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 0ef4002699..82cf0a4238 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 extends PhysicalUnary implements Sort {
- protected final List orderKeys;
+ protected final ImmutableList orderKeys;
/**
* Constructor of AbstractPhysicalSort.
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java
index f41ba9302f..b06af5431b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalAggregate.java
@@ -43,11 +43,11 @@ import java.util.Optional;
*/
public class PhysicalAggregate extends PhysicalUnary implements Aggregate {
- private final List groupByExpressions;
+ private final ImmutableList groupByExpressions;
- private final List outputExpressions;
+ private final ImmutableList outputExpressions;
- private final List partitionExpressions;
+ private final ImmutableList partitionExpressions;
private final AggPhase aggPhase;
@@ -80,10 +80,10 @@ public class PhysicalAggregate extends PhysicalUnary groupExpression, LogicalProperties logicalProperties,
CHILD_TYPE child) {
super(PlanType.PHYSICAL_AGGREGATE, groupExpression, logicalProperties, child);
- this.groupByExpressions = groupByExpressions;
- this.outputExpressions = outputExpressions;
+ this.groupByExpressions = ImmutableList.copyOf(groupByExpressions);
+ this.outputExpressions = ImmutableList.copyOf(outputExpressions);
this.aggPhase = aggPhase;
- this.partitionExpressions = partitionExpressions;
+ this.partitionExpressions = ImmutableList.copyOf(partitionExpressions);
this.usingStream = usingStream;
this.isFinalPhase = isFinalPhase;
}
@@ -102,10 +102,10 @@ public class PhysicalAggregate extends PhysicalUnary
extends AbstractPhysicalPlan
implements BinaryPlan {
-
- public PhysicalBinary(PlanType type, LogicalProperties logicalProperties,
- LEFT_CHILD_TYPE leftChild, RIGHT_CHILD_TYPE rightChild) {
- super(type, logicalProperties, leftChild, rightChild);
- }
-
public PhysicalBinary(PlanType type, Optional 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 de883c2c19..89b6ceeaa1 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,7 @@ import java.util.Optional;
* select * from tbl limit 0
*/
public class PhysicalEmptyRelation extends PhysicalLeaf implements EmptyRelation {
- private final List extends NamedExpression> projects;
+ private final ImmutableList 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/PhysicalHashJoin.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashJoin.java
index 11a27566e9..8f38c06f8f 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
@@ -44,6 +44,7 @@ public class PhysicalHashJoin<
private boolean shouldTranslateOutput = true;
+ // TODO: What's purpose? it's alway empty.
private final List filterConjuncts = Lists.newArrayList();
public PhysicalHashJoin(JoinType joinType, List 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 0809d91f12..5ca0028d17 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,11 +31,6 @@ 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, LogicalProperties logicalProperties) {
- super(type, logicalProperties);
- }
-
public PhysicalLeaf(PlanType type, Optional groupExpression, LogicalProperties logicalProperties) {
super(type, groupExpression, logicalProperties);
}
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 97a8474b16..32323da0a1 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
@@ -29,6 +29,8 @@ import org.apache.doris.nereids.trees.plans.visitor.PlanVisitor;
import org.apache.doris.nereids.util.Utils;
import org.apache.doris.statistics.StatsDeriveResult;
+import com.google.common.collect.ImmutableList;
+
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@@ -40,8 +42,8 @@ public class PhysicalOlapScan extends PhysicalRelation {
private final OlapTable olapTable;
private final DistributionSpec distributionSpec;
private final long selectedIndexId;
- private final List selectedTabletIds;
- private final List selectedPartitionIds;
+ private final ImmutableList selectedTabletIds;
+ private final ImmutableList selectedPartitionIds;
private final PreAggStatus preAggStatus;
/**
@@ -53,8 +55,8 @@ public class PhysicalOlapScan extends PhysicalRelation {
super(id, PlanType.PHYSICAL_OLAP_SCAN, qualifier, groupExpression, logicalProperties);
this.olapTable = olapTable;
this.selectedIndexId = selectedIndexId;
- this.selectedTabletIds = selectedTabletIds;
- this.selectedPartitionIds = selectedPartitionIds;
+ this.selectedTabletIds = ImmutableList.copyOf(selectedTabletIds);
+ this.selectedPartitionIds = ImmutableList.copyOf(selectedPartitionIds);
this.distributionSpec = distributionSpec;
this.preAggStatus = preAggStatus;
}
@@ -63,15 +65,15 @@ public class PhysicalOlapScan extends PhysicalRelation {
* Constructor for PhysicalOlapScan.
*/
public PhysicalOlapScan(RelationId id, OlapTable olapTable, List qualifier, long selectedIndexId,
- List selectedTabletId, List selectedPartitionId, DistributionSpec distributionSpec,
+ List selectedTabletIds, List selectedPartitionIds, DistributionSpec distributionSpec,
PreAggStatus preAggStatus, Optional groupExpression, LogicalProperties logicalProperties,
PhysicalProperties physicalProperties, StatsDeriveResult statsDeriveResult) {
super(id, PlanType.PHYSICAL_OLAP_SCAN, qualifier, groupExpression, logicalProperties, physicalProperties,
statsDeriveResult);
this.olapTable = olapTable;
this.selectedIndexId = selectedIndexId;
- this.selectedTabletIds = selectedTabletId;
- this.selectedPartitionIds = selectedPartitionId;
+ this.selectedTabletIds = ImmutableList.copyOf(selectedTabletIds);
+ this.selectedPartitionIds = ImmutableList.copyOf(selectedPartitionIds);
this.distributionSpec = distributionSpec;
this.preAggStatus = preAggStatus;
}
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 8a593095c7..7f783a438c 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
@@ -41,7 +41,7 @@ import java.util.Optional;
* e.g. select 100, 'value'
*/
public class PhysicalOneRowRelation extends PhysicalLeaf implements OneRowRelation {
- private final List projects;
+ private final ImmutableList projects;
public PhysicalOneRowRelation(List 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/PhysicalProject.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalProject.java
index 04e457c1e7..6dfee166c3 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
@@ -30,6 +30,7 @@ import org.apache.doris.nereids.util.Utils;
import org.apache.doris.statistics.StatsDeriveResult;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import java.util.List;
import java.util.Objects;
@@ -40,7 +41,7 @@ import java.util.Optional;
*/
public class PhysicalProject extends PhysicalUnary implements Project {
- private final List projects;
+ private final ImmutableList projects;
public PhysicalProject(List projects, LogicalProperties logicalProperties, CHILD_TYPE child) {
this(projects, Optional.empty(), logicalProperties, child);
@@ -49,7 +50,7 @@ public class PhysicalProject extends PhysicalUnary projects, Optional groupExpression,
LogicalProperties logicalProperties, CHILD_TYPE child) {
super(PlanType.PHYSICAL_PROJECT, groupExpression, logicalProperties, child);
- this.projects = Objects.requireNonNull(projects, "projects can not be null");
+ this.projects = ImmutableList.copyOf(Objects.requireNonNull(projects, "projects can not be null"));
}
public PhysicalProject(List projects, Optional groupExpression,
@@ -57,7 +58,7 @@ public class PhysicalProject extends PhysicalUnary getProjects() {
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 eb458bf171..81006a73e0 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,7 +38,7 @@ import java.util.Optional;
*/
public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
- protected final List qualifier;
+ protected final ImmutableList qualifier;
protected final RelationId id;
@@ -48,7 +48,7 @@ public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
public PhysicalRelation(RelationId id, PlanType type, List qualifier,
Optional groupExpression, LogicalProperties logicalProperties) {
super(type, groupExpression, logicalProperties);
- this.qualifier = Objects.requireNonNull(qualifier, "qualifier can not be null");
+ this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
this.id = id;
}
@@ -59,7 +59,7 @@ public abstract class PhysicalRelation extends PhysicalLeaf implements Scan {
Optional groupExpression, LogicalProperties logicalProperties,
PhysicalProperties physicalProperties, StatsDeriveResult statsDeriveResult) {
super(type, groupExpression, logicalProperties, physicalProperties, statsDeriveResult);
- this.qualifier = Objects.requireNonNull(qualifier, "qualifier can not be null");
+ this.qualifier = ImmutableList.copyOf(Objects.requireNonNull(qualifier, "qualifier can not be null"));
this.id = id;
}
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 8678fd92d0..8eeb6071d7 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
@@ -82,8 +82,8 @@ public class RuntimeFilter {
if (!expr.children().stream().allMatch(SlotReference.class::isInstance)) {
return null;
}
- //current we assume that there are certainly different slot reference in equal to.
- //they are not from the same relation.
+ // current we assume that there are certainly different slot reference in equal to.
+ // they are not from the same relation.
int exchangeTag = join.child(0).getOutput().stream().anyMatch(slot -> slot.getExprId().equals(
((SlotReference) expr.child(1)).getExprId())) ? 1 : 0;
return Pair.of(expr.child(exchangeTag), expr.child(1 ^ exchangeTag));
diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
index cf8cf9fe2c..b4c41bdf3f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/util/Utils.java
@@ -174,7 +174,7 @@ public class Utils {
public static List getCorrelatedSlots(List correlatedPredicates,
List correlatedSlots) {
List slots = new ArrayList<>();
- correlatedPredicates.stream().forEach(predicate -> {
+ correlatedPredicates.forEach(predicate -> {
if (!(predicate instanceof BinaryExpression)) {
throw new AnalysisException("UnSupported expr type: " + correlatedPredicates);
}