diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java index a20280166a..09d6581894 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/AbstractPlan.java @@ -183,4 +183,15 @@ public abstract class AbstractPlan extends AbstractTreeNode implements Pla public void setMutableState(String key, Object state) { this.mutableState = this.mutableState.set(key, state); } + + /** + * used in treeString() + * @return "" if groupExpression is empty, o.w. string format of group id + */ + public String getGroupIdAsString() { + String groupId = getGroupExpression().isPresent() + ? "#" + getGroupExpression().get().getOwnerGroup().getGroupId().asInt() + : ""; + return groupId; + } } 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 f483f6f3da..0869c75d7d 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 @@ -70,7 +70,7 @@ public class PhysicalAssertNumRows extends PhysicalUnar @Override public String toString() { - return Utils.toSqlString("PhysicalAssertNumRows", + return Utils.toSqlString("PhysicalAssertNumRows" + getGroupIdAsString(), "assertNumRowsElement", assertNumRowsElement); } @@ -123,7 +123,7 @@ public class PhysicalAssertNumRows extends PhysicalUnar @Override public PhysicalAssertNumRows withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalAssertNumRows<>(assertNumRowsElement, Optional.empty(), + return new PhysicalAssertNumRows<>(assertNumRowsElement, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java index 2cac7543a1..bed451e6a9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalDistribute.java @@ -61,7 +61,7 @@ public class PhysicalDistribute extends PhysicalUnary extends PhysicalUnary withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalDistribute<>(distributionSpec, Optional.empty(), + return new PhysicalDistribute<>(distributionSpec, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } } 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 b53bd76ad0..790dcb473e 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 @@ -73,7 +73,7 @@ public class PhysicalFilter extends PhysicalUnary extends PhysicalUnary withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalFilter<>(conjuncts, Optional.empty(), getLogicalProperties(), physicalProperties, + return new PhysicalFilter<>(conjuncts, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashAggregate.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashAggregate.java index 68d1ab48f4..3da6bf2d9d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashAggregate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalHashAggregate.java @@ -182,7 +182,7 @@ public class PhysicalHashAggregate extends PhysicalUnar @Override public String toString() { - return Utils.toSqlString("PhysicalHashAggregate[" + id.asInt() + "]", + return Utils.toSqlString("PhysicalHashAggregate[" + id.asInt() + "]" + getGroupIdAsString(), "aggPhase", aggregateParam.aggPhase, "aggMode", aggregateParam.aggMode, "maybeUseStreaming", maybeUsingStream, @@ -249,7 +249,7 @@ public class PhysicalHashAggregate extends PhysicalUnar public PhysicalHashAggregate withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { return new PhysicalHashAggregate<>(groupByExpressions, outputExpressions, partitionExpressions, - aggregateParam, maybeUsingStream, Optional.empty(), getLogicalProperties(), + aggregateParam, maybeUsingStream, groupExpression, getLogicalProperties(), requireProperties, physicalProperties, statistics, child()); } @@ -257,7 +257,7 @@ public class PhysicalHashAggregate extends PhysicalUnar @Override public PhysicalHashAggregate withAggOutput(List newOutput) { return new PhysicalHashAggregate<>(groupByExpressions, newOutput, partitionExpressions, - aggregateParam, maybeUsingStream, Optional.empty(), getLogicalProperties(), + aggregateParam, maybeUsingStream, groupExpression, getLogicalProperties(), requireProperties, physicalProperties, statistics, 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 1f35181a65..513c2ad286 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 @@ -115,7 +115,8 @@ public class PhysicalHashJoin< args.add("hint"); args.add(hint); } - return Utils.toSqlString("PhysicalHashJoin[" + id.asInt() + "]", args.toArray()); + return Utils.toSqlString("PhysicalHashJoin[" + id.asInt() + "]" + getGroupIdAsString(), + args.toArray()); } @Override @@ -142,6 +143,6 @@ public class PhysicalHashJoin< public PhysicalHashJoin withPhysicalPropertiesAndStats( PhysicalProperties physicalProperties, Statistics statistics) { return new PhysicalHashJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, hint, markJoinSlotReference, - Optional.empty(), getLogicalProperties(), physicalProperties, statistics, left(), right()); + groupExpression, getLogicalProperties(), physicalProperties, statistics, left(), right()); } } 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 89f3ad029b..d98e394d82 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 @@ -152,7 +152,7 @@ public class PhysicalLimit extends PhysicalUnary withPhysicalPropertiesAndStats( PhysicalProperties physicalProperties, Statistics statistics) { return new PhysicalNestedLoopJoin<>(joinType, - hashJoinConjuncts, otherJoinConjuncts, markJoinSlotReference, Optional.empty(), + hashJoinConjuncts, otherJoinConjuncts, markJoinSlotReference, groupExpression, getLogicalProperties(), physicalProperties, statistics, left(), right()); } 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 f815c28f7d..8f07fd20df 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 @@ -109,7 +109,7 @@ public class PhysicalOlapScan extends PhysicalRelation implements OlapScan { @Override public String toString() { - return Utils.toSqlString("PhysicalOlapScan", + return Utils.toSqlString("PhysicalOlapScan[" + id.asInt() + "]" + getGroupIdAsString(), "qualified", Utils.qualifiedName(qualifier, olapTable.getName()), "output", getOutput(), "stats", statistics @@ -158,7 +158,7 @@ public class PhysicalOlapScan extends PhysicalRelation implements OlapScan { public PhysicalOlapScan withPhysicalPropertiesAndStats( PhysicalProperties physicalProperties, Statistics statistics) { return new PhysicalOlapScan(id, olapTable, qualifier, selectedIndexId, selectedTabletIds, - selectedPartitionIds, distributionSpec, preAggStatus, Optional.empty(), + selectedPartitionIds, distributionSpec, preAggStatus, groupExpression, getLogicalProperties(), physicalProperties, statistics); } } 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 dc4824de34..b780057bbd 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 @@ -89,7 +89,7 @@ public class PhysicalOneRowRelation extends PhysicalLeaf implements OneRowRelati @Override public String toString() { - return Utils.toSqlString("PhysicalOneRowRelation", + return Utils.toSqlString("PhysicalOneRowRelation[" + id.asInt() + "]" + getGroupIdAsString(), "expressions", projects, "buildUnionNode", buildUnionNode ); @@ -116,7 +116,7 @@ public class PhysicalOneRowRelation extends PhysicalLeaf implements OneRowRelati @Override public PhysicalOneRowRelation withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalOneRowRelation(projects, buildUnionNode, Optional.empty(), + return new PhysicalOneRowRelation(projects, buildUnionNode, groupExpression, logicalPropertiesSupplier.get(), physicalProperties, statistics); } 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 8f11b44e2e..3362d88ee6 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 @@ -67,7 +67,7 @@ public class PhysicalProject extends PhysicalUnary extends PhysicalUnary withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalProject<>(projects, Optional.empty(), getLogicalProperties(), physicalProperties, + return new PhysicalProject<>(projects, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalQuickSort.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalQuickSort.java index 3deb81166d..aacefd1fcb 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalQuickSort.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalQuickSort.java @@ -91,13 +91,13 @@ public class PhysicalQuickSort extends AbstractPhysical @Override public PhysicalQuickSort withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalQuickSort<>(orderKeys, phase, Optional.empty(), getLogicalProperties(), physicalProperties, + return new PhysicalQuickSort<>(orderKeys, phase, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } @Override public String toString() { - return Utils.toSqlString("PhysicalQuickSort", + return Utils.toSqlString("PhysicalQuickSort[" + id.asInt() + "]" + getGroupIdAsString(), "orderKeys", orderKeys, "phase", phase.toString() ); 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 eeeb2fa10f..7d4448e518 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 @@ -92,7 +92,7 @@ public class PhysicalRepeat extends PhysicalUnary extends PhysicalUnary withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalRepeat<>(groupingSets, outputExpressions, Optional.empty(), + return new PhysicalRepeat<>(groupingSets, outputExpressions, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } 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 070d8f1dbd..21f1df9b99 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 @@ -105,7 +105,7 @@ public class PhysicalStorageLayerAggregate extends PhysicalRelation { @Override public String toString() { - return Utils.toSqlString("PhysicalStorageLayerAggregate", + return Utils.toSqlString("PhysicalStorageLayerAggregate[" + id.asInt() + "]" + getGroupIdAsString(), "pushDownAggOp", aggOp, "relation", relation, "stats", statistics @@ -131,7 +131,7 @@ public class PhysicalStorageLayerAggregate extends PhysicalRelation { @Override public PhysicalPlan withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalStorageLayerAggregate(relation, aggOp, Optional.empty(), + return new PhysicalStorageLayerAggregate(relation, aggOp, groupExpression, getLogicalProperties(), physicalProperties, statistics); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java index 5bf08448a7..526857355d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalTopN.java @@ -125,13 +125,13 @@ public class PhysicalTopN extends AbstractPhysicalSort< @Override public PhysicalTopN withPhysicalPropertiesAndStats(PhysicalProperties physicalProperties, Statistics statistics) { - return new PhysicalTopN<>(orderKeys, limit, offset, phase, Optional.empty(), + return new PhysicalTopN<>(orderKeys, limit, offset, phase, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); } @Override public String toString() { - return Utils.toSqlString("PhysicalTopN", + return Utils.toSqlString("PhysicalTopN[" + id.asInt() + "]" + getGroupIdAsString(), "limit", limit, "offset", offset, "orderKeys", orderKeys, diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalUnion.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalUnion.java index f8c1b7d2bd..025397ac92 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalUnion.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalUnion.java @@ -61,7 +61,7 @@ public class PhysicalUnion extends PhysicalSetOperation { @Override public String toString() { - return Utils.toSqlString("PhysicalUnion", + return Utils.toSqlString("PhysicalUnion" + getGroupIdAsString(), "qualifier", qualifier, "stats", statistics); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalWindow.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalWindow.java index 9838cea3ae..8ac180fce8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalWindow.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/plans/physical/PhysicalWindow.java @@ -95,7 +95,7 @@ public class PhysicalWindow extends PhysicalUnary extends PhysicalUnary(windowFrameGroup, requireProperties, Optional.empty(), + return new PhysicalWindow<>(windowFrameGroup, requireProperties, groupExpression, getLogicalProperties(), physicalProperties, statistics, child()); }