This is an automated email from the ASF dual-hosted git repository.

yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new b1a71fab2ce branch-2.1: [fix](pipelinex) fix null aware left anti join 
instance num #51053 (#51067)
b1a71fab2ce is described below

commit b1a71fab2cef5a83af986f6b2893b593b376f8d7
Author: yujun <yu...@selectdb.com>
AuthorDate: Wed May 21 11:51:20 2025 +0800

    branch-2.1: [fix](pipelinex) fix null aware left anti join instance num 
#51053 (#51067)
    
    cherry pick from #51053
---
 .../src/main/java/org/apache/doris/common/TreeNode.java    | 14 ++++++++++++++
 .../main/java/org/apache/doris/planner/HashJoinNode.java   |  8 --------
 .../main/java/org/apache/doris/planner/PlanFragment.java   |  4 +++-
 .../src/main/java/org/apache/doris/planner/PlanNode.java   |  4 ----
 4 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/common/TreeNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/common/TreeNode.java
index e0651644e59..37814ea0a00 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/common/TreeNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/common/TreeNode.java
@@ -237,4 +237,18 @@ public class TreeNode<NodeType extends TreeNode<NodeType>> 
{
         return null;
     }
 
+    /** anyMatch */
+    public boolean anyMatch(Predicate<TreeNode<? extends NodeType>> func) {
+        if (func.apply(this)) {
+            return true;
+        }
+
+        for (NodeType child : children) {
+            if (child.anyMatch(func)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java
index c3cbf2afce1..b664b7a26c8 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/HashJoinNode.java
@@ -959,12 +959,4 @@ public class HashJoinNode extends JoinNodeBase {
             return slotRef;
         }
     }
-
-    @Override
-    public boolean isNullAwareLeftAntiJoin() {
-        if (joinOp == JoinOperator.NULL_AWARE_LEFT_ANTI_JOIN) {
-            return true;
-        }
-        return children.stream().anyMatch(PlanNode::isNullAwareLeftAntiJoin);
-    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java
index 2469d087cdd..877a0b91dcd 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanFragment.java
@@ -21,6 +21,7 @@
 package org.apache.doris.planner;
 
 import org.apache.doris.analysis.Expr;
+import org.apache.doris.analysis.JoinOperator;
 import org.apache.doris.analysis.QueryStmt;
 import org.apache.doris.analysis.SlotDescriptor;
 import org.apache.doris.analysis.SlotRef;
@@ -472,6 +473,7 @@ public class PlanFragment extends TreeNode<PlanFragment> {
     }
 
     public boolean hasNullAwareLeftAntiJoin() {
-        return planRoot.isNullAwareLeftAntiJoin();
+        return planRoot.anyMatch(plan -> plan instanceof JoinNodeBase
+                && ((JoinNodeBase) plan).getJoinOp() == 
JoinOperator.NULL_AWARE_LEFT_ANTI_JOIN);
     }
 }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java 
b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
index b5ef5f8148f..238fc4251b5 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/planner/PlanNode.java
@@ -269,10 +269,6 @@ public abstract class PlanNode extends TreeNode<PlanNode> 
implements PlanStats {
         this.fragment = fragment;
     }
 
-    public boolean isNullAwareLeftAntiJoin() {
-        return children.stream().anyMatch(PlanNode::isNullAwareLeftAntiJoin);
-    }
-
     public PlanFragment getFragment() {
         return fragment;
     }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to