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

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


The following commit(s) were added to refs/heads/branch-3.1 by this push:
     new 09511679b6f branch-3.1: [fix](nereids)ReorderJoin rule should not 
absorb mark join to multi join #56837 (#56906)
09511679b6f is described below

commit 09511679b6f6dff5a5ae32d2309fe46fcd102620
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Oct 15 11:09:45 2025 +0800

    branch-3.1: [fix](nereids)ReorderJoin rule should not absorb mark join to 
multi join #56837 (#56906)
    
    Cherry-picked from #56837
    
    Co-authored-by: starocean999 <[email protected]>
---
 .../doris/nereids/rules/rewrite/ReorderJoin.java      |  4 ++++
 .../doris/nereids/rules/rewrite/ReorderJoinTest.java  | 19 +++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java
index 37765dd3623..0a0971e3de2 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/rules/rewrite/ReorderJoin.java
@@ -124,6 +124,10 @@ public class ReorderJoin extends OneRewriteRuleFactory {
             join = (LogicalJoin<?, ?>) plan;
         }
 
+        if (join.isMarkJoin()) {
+            return plan;
+        }
+
         if (join.getJoinType().isInnerOrCrossJoin()) {
             joinFilter.addAll(join.getHashJoinConjuncts());
             joinFilter.addAll(join.getOtherJoinConjuncts());
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ReorderJoinTest.java
 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ReorderJoinTest.java
index 42f87cdd557..047b7bc27ee 100644
--- 
a/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ReorderJoinTest.java
+++ 
b/fe/fe-core/src/test/java/org/apache/doris/nereids/rules/rewrite/ReorderJoinTest.java
@@ -105,6 +105,25 @@ class ReorderJoinTest implements MemoPatternMatchSupported 
{
                 );
     }
 
+    @Test
+    public void testLeftSemiMarkJoin() {
+        LogicalPlan plan = new LogicalPlanBuilder(scan1)
+                .markJoin(scan2, JoinType.LEFT_SEMI_JOIN, Pair.of(0, 0))
+                .join(scan3, JoinType.INNER_JOIN, Pair.of(0, 0))
+                .filter(new EqualTo(scan3.getOutput().get(0), 
scan1.getOutput().get(0)))
+                .build();
+        ConnectContext connectContext = MemoTestUtils.createConnectContext();
+        
connectContext.getSessionVariable().setDisableNereidsRules("PRUNE_EMPTY_PARTITION");
+        PlanChecker.from(connectContext, plan)
+                .applyBottomUp(new ReorderJoin())
+                .matchesFromRoot(
+                        logicalJoin(
+                                logicalJoin().when(join -> join.isMarkJoin()),
+                                logicalOlapScan()
+                        ).whenNot(join -> join.getJoinType().isCrossJoin())
+                );
+    }
+
     @Test
     public void testRightSemiJoin() {
         LogicalPlan plan1 = new LogicalPlanBuilder(scan1)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to