This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-2.0-alpha in repository https://gitbox.apache.org/repos/asf/doris.git
commit 06b61711e92c9ca4ba68c91d21935996e848a21c Author: jakevin <[email protected]> AuthorDate: Mon Apr 17 23:12:26 2023 +0800 [fix](Nereids): when GroupExpr already exists, we need to remove ParentExpression (#18749) --- .../src/main/java/org/apache/doris/nereids/memo/GroupExpression.java | 2 +- fe/fe-core/src/main/java/org/apache/doris/nereids/memo/Memo.java | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java index 12e9816f8e..afa6d51f9b 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/memo/GroupExpression.java @@ -182,7 +182,7 @@ public class GroupExpression { */ public boolean isUnused() { if (isUnused) { - Preconditions.checkState(children.isEmpty() || ownerGroup == null); + Preconditions.checkState(children.isEmpty() && ownerGroup == null); return true; } Preconditions.checkState(ownerGroup != null); 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 7a8d62338d..4ad1b118dc 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 @@ -427,6 +427,9 @@ public class Memo { if (target != null && !target.getGroupId().equals(existedGroupExpression.getOwnerGroup().getGroupId())) { mergeGroup(existedGroupExpression.getOwnerGroup(), target); } + // When we create a GroupExpression, we will add it into ParentExpression of childGroup. + // But if it already exists, we should remove it from ParentExpression of childGroup. + groupExpression.children().forEach(childGroup -> childGroup.removeParentExpression(groupExpression)); return CopyInResult.of(false, existedGroupExpression); } if (target != null) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
