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]