diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupId.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupId.java index b3870dd84a..70ba3786a1 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupId.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupId.java @@ -44,6 +44,6 @@ public class GroupId extends Id { @Override public String toString() { - return "GroupId#" + id; + return "@" + id; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java index d39b92d360..bdcf98d3bf 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java @@ -751,7 +751,7 @@ public class Memo { if (costAndGroupExpression.isPresent()) { Cost cost = costAndGroupExpression.get().first; GroupExpression child = costAndGroupExpression.get().second; - builder.append("\n " + cost.getValue() + " " + prop) + builder.append("\n\n " + cost.getValue() + " " + prop) .append("\n ").append(child) .append("\n " + child.getInputPropertiesListOrEmpty(prop)); } 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 f3d545c8ea..2128827af1 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 @@ -203,9 +203,14 @@ public abstract class AbstractPlan extends AbstractTreeNode implements Pla * @return "" if groupExpression is empty, o.w. string format of group id */ public String getGroupIdAsString() { - String groupId = getGroupExpression().isPresent() - ? "#" + getGroupExpression().get().getOwnerGroup().getGroupId().asInt() - : ""; + String groupId; + if (getGroupExpression().isPresent()) { + groupId = "@" + groupExpression.get().getOwnerGroup().getGroupId().asInt(); + } else if (getMutableState("group").isPresent()) { + groupId = "@" + getMutableState("group").get(); + } else { + groupId = ""; + } return groupId; } 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 7a75383868..f1e4e329b8 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 @@ -158,9 +158,14 @@ public class PhysicalHashJoin< @Override public PhysicalHashJoin withChildren(List children) { Preconditions.checkArgument(children.size() == 2); - return new PhysicalHashJoin<>(joinType, hashJoinConjuncts, otherJoinConjuncts, hint, markJoinSlotReference, + PhysicalHashJoin newJoin = new PhysicalHashJoin<>(joinType, hashJoinConjuncts, + otherJoinConjuncts, hint, markJoinSlotReference, Optional.empty(), getLogicalProperties(), physicalProperties, statistics, children.get(0), children.get(1)); + if (groupExpression.isPresent()) { + newJoin.setMutableState("group", groupExpression.get().getOwnerGroup().getGroupId().asInt()); + } + return newJoin; } @Override