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

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


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new 64422909b1a [fix](join) incorrect result of mark join in nested loop 
join (#31280) (#31362)
64422909b1a is described below

commit 64422909b1a6cb86aad4d6d6fbb1d5f9c1d0b1a3
Author: Jerry Hu <[email protected]>
AuthorDate: Mon Feb 26 10:05:53 2024 +0800

    [fix](join) incorrect result of mark join in nested loop join (#31280) 
(#31362)
---
 be/src/vec/exec/join/vnested_loop_join_node.h                    | 9 ++-------
 .../data/nereids_p0/join/test_nestedloop_semi_anti_join.out      | 9 +++++++++
 .../data/query_p0/join/test_nestedloop_semi_anti_join.out        | 9 +++++++++
 .../suites/nereids_p0/join/test_nestedloop_semi_anti_join.groovy | 8 ++++++++
 .../suites/query_p0/join/test_nestedloop_semi_anti_join.groovy   | 9 +++++++++
 5 files changed, 37 insertions(+), 7 deletions(-)

diff --git a/be/src/vec/exec/join/vnested_loop_join_node.h 
b/be/src/vec/exec/join/vnested_loop_join_node.h
index 2e60f0e6c69..3f4ce040668 100644
--- a/be/src/vec/exec/join/vnested_loop_join_node.h
+++ b/be/src/vec/exec/join/vnested_loop_join_node.h
@@ -153,13 +153,8 @@ private:
                     _finalize_current_phase<false, JoinOpType::value == 
TJoinOp::LEFT_SEMI_JOIN>(
                             mutable_join_block, state->batch_size());
                 }
-            }
-
-            if (_left_side_process_count) {
-                if (_is_mark_join && _build_blocks.empty()) {
-                    DCHECK_EQ(JoinOpType::value, TJoinOp::CROSS_JOIN);
-                    _append_left_data_with_null(mutable_join_block);
-                }
+            } else if (_left_side_process_count && _is_mark_join && 
_build_blocks.empty()) {
+                _append_left_data_with_null(mutable_join_block);
             }
         }
 
diff --git 
a/regression-test/data/nereids_p0/join/test_nestedloop_semi_anti_join.out 
b/regression-test/data/nereids_p0/join/test_nestedloop_semi_anti_join.out
index 73d9152253a..a29e19b6032 100644
--- a/regression-test/data/nereids_p0/join/test_nestedloop_semi_anti_join.out
+++ b/regression-test/data/nereids_p0/join/test_nestedloop_semi_anti_join.out
@@ -39,3 +39,12 @@
 3      3
 10     10
 
+-- !join_mark_join1 --
+1      1
+2      2
+3      3
+10     10
+
+-- !join_mark_join2 --
+10     10
+
diff --git 
a/regression-test/data/query_p0/join/test_nestedloop_semi_anti_join.out 
b/regression-test/data/query_p0/join/test_nestedloop_semi_anti_join.out
index 563fc605a96..ecdfc8f8a28 100644
--- a/regression-test/data/query_p0/join/test_nestedloop_semi_anti_join.out
+++ b/regression-test/data/query_p0/join/test_nestedloop_semi_anti_join.out
@@ -39,6 +39,15 @@
 3      3
 10     10
 
+-- !join_mark_join1 --
+1      1
+2      2
+3      3
+10     10
+
+-- !join_mark_join2 --
+10     10
+
 -- !nlj_left_semi --
 1
 
diff --git 
a/regression-test/suites/nereids_p0/join/test_nestedloop_semi_anti_join.groovy 
b/regression-test/suites/nereids_p0/join/test_nestedloop_semi_anti_join.groovy
index cb7f4144b8b..81e6334bf02 100644
--- 
a/regression-test/suites/nereids_p0/join/test_nestedloop_semi_anti_join.groovy
+++ 
b/regression-test/suites/nereids_p0/join/test_nestedloop_semi_anti_join.groovy
@@ -78,6 +78,14 @@ suite("test_nestedloop_semi_anti_join", "nereids_p0") {
     qt_join """
         select * from ${tbl1} where user_id not in (select user_id from 
${tbl2} where ${tbl1}.user_id >  ${tbl2}.user_id) order by ${tbl1}.user_id;
     """
+
+    qt_join_mark_join1 """
+        select * from ${tbl1} where exists (select * from ${tbl2} where 
${tbl1}.user_id >  ${tbl2}.user_id) or ${tbl1}.user_id2 > 3 order by 
${tbl1}.user_id;
+    """
+
+    qt_join_mark_join2 """
+        select * from ${tbl1} where not exists (select * from ${tbl2} where 
${tbl1}.user_id >  ${tbl2}.user_id) or ${tbl1}.user_id2 > 3 order by 
${tbl1}.user_id;
+    """
     sql "DROP TABLE IF EXISTS ${tbl1}"
     sql "DROP TABLE IF EXISTS ${tbl2}"
 }
diff --git 
a/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy 
b/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
index 61c6538217c..47dfbc02257 100644
--- a/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
+++ b/regression-test/suites/query_p0/join/test_nestedloop_semi_anti_join.groovy
@@ -76,6 +76,15 @@ suite("test_nestedloop_semi_anti_join", "query_p0") {
     qt_join """
         select * from ${tbl1} where user_id not in (select user_id from 
${tbl2} where ${tbl1}.user_id >  ${tbl2}.user_id) order by ${tbl1}.user_id;
     """
+
+    qt_join_mark_join1 """
+        select * from ${tbl1} where exists (select * from ${tbl2} where 
${tbl1}.user_id >  ${tbl2}.user_id) or ${tbl1}.user_id2 > 3 order by 
${tbl1}.user_id;
+    """
+
+    qt_join_mark_join2 """
+        select * from ${tbl1} where not exists (select * from ${tbl2} where 
${tbl1}.user_id >  ${tbl2}.user_id) or ${tbl1}.user_id2 > 3 order by 
${tbl1}.user_id;
+    """
+
     sql "DROP TABLE IF EXISTS ${tbl1}"
 
     sql """


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

Reply via email to