This is an automated email from the ASF dual-hosted git repository.
gabriellee pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 69868f18d6 [Bug](join) fix nested loop join some problems (#24034)
69868f18d6 is described below
commit 69868f18d6c2da9bfa5b13060123262a169b400b
Author: Pxl <[email protected]>
AuthorDate: Fri Sep 8 17:40:41 2023 +0800
[Bug](join) fix nested loop join some problems (#24034)
---
be/src/vec/exec/join/vnested_loop_join_node.cpp | 20 +++++++++++++-------
.../data/nereids_syntax_p0/sub_query_correlated.out | 19 +++++++++++++++++++
.../nereids_syntax_p0/sub_query_correlated.groovy | 14 ++++++++++++++
3 files changed, 46 insertions(+), 7 deletions(-)
diff --git a/be/src/vec/exec/join/vnested_loop_join_node.cpp
b/be/src/vec/exec/join/vnested_loop_join_node.cpp
index 82fecf5793..75d7c68f35 100644
--- a/be/src/vec/exec/join/vnested_loop_join_node.cpp
+++ b/be/src/vec/exec/join/vnested_loop_join_node.cpp
@@ -404,7 +404,7 @@ void
VNestedLoopJoinNode::_finalize_current_phase(MutableBlock& mutable_block, s
DCHECK(!_is_mark_join);
auto build_block_sz = _build_blocks.size();
size_t i = _output_null_idx_build_side;
- for (; i < build_block_sz and column_size < batch_size; i++) {
+ for (; i < build_block_sz && column_size < batch_size; i++) {
const auto& cur_block = _build_blocks[i];
const auto* __restrict cur_visited_flags =
assert_cast<ColumnUInt8*>(_build_side_visited_flags[i].get())
@@ -493,16 +493,22 @@ void
VNestedLoopJoinNode::_finalize_current_phase(MutableBlock& mutable_block, s
*dst_columns[dst_columns.size() - 1])
.get_data();
mark_data.reserve(mark_data.size() + _left_side_process_count);
- DCHECK_LT(_left_block_pos, _left_block.rows());
+ DCHECK_LE(_left_block_start_pos + _left_side_process_count,
_left_block.rows());
for (int j = _left_block_start_pos;
j < _left_block_start_pos + _left_side_process_count; ++j) {
mark_data.emplace_back(IsSemi !=
_cur_probe_row_visited_flags[j]);
- for (size_t i = 0; i < _num_probe_side_columns; ++i) {
- const ColumnWithTypeAndName src_column =
_left_block.get_by_position(i);
- DCHECK(_join_op != TJoinOp::FULL_OUTER_JOIN);
- dst_columns[i]->insert_from(*src_column.column, j);
- }
}
+ for (size_t i = 0; i < _num_probe_side_columns; ++i) {
+ const ColumnWithTypeAndName src_column =
_left_block.get_by_position(i);
+ DCHECK(_join_op != TJoinOp::FULL_OUTER_JOIN);
+ dst_columns[i]->insert_range_from(*src_column.column,
_left_block_start_pos,
+ _left_side_process_count);
+ }
+ for (size_t i = 0; i < _num_build_side_columns; ++i) {
+ dst_columns[_num_probe_side_columns + i]->insert_many_defaults(
+ _left_side_process_count);
+ }
+ _resize_fill_tuple_is_null_column(_left_side_process_count, 0, 1);
}
}
}
diff --git a/regression-test/data/nereids_syntax_p0/sub_query_correlated.out
b/regression-test/data/nereids_syntax_p0/sub_query_correlated.out
index 116d4ec918..06cb3ca839 100644
--- a/regression-test/data/nereids_syntax_p0/sub_query_correlated.out
+++ b/regression-test/data/nereids_syntax_p0/sub_query_correlated.out
@@ -390,3 +390,22 @@
-- !imitate_tpcds_10 --
+-- !doris_6937 --
+1 2
+1 3
+2 4
+2 5
+3 3
+3 4
+
+-- !doris_6937_2 --
+1 2
+1 3
+2 4
+2 5
+20 2
+22 3
+24 4
+3 3
+3 4
+
diff --git
a/regression-test/suites/nereids_syntax_p0/sub_query_correlated.groovy
b/regression-test/suites/nereids_syntax_p0/sub_query_correlated.groovy
index 349802e21a..8a1df18341 100644
--- a/regression-test/suites/nereids_syntax_p0/sub_query_correlated.groovy
+++ b/regression-test/suites/nereids_syntax_p0/sub_query_correlated.groovy
@@ -415,4 +415,18 @@ suite ("sub_query_correlated") {
and (exists (SELECT * FROM
sub_query_correlated_subquery3, sub_query_correlated_subquery4 WHERE
sub_query_correlated_subquery1.k1 = sub_query_correlated_subquery3.k1 and
sub_query_correlated_subquery3.v1 = sub_query_correlated_subquery4.k1)
OR exists (SELECT * FROM
sub_query_correlated_subquery3, sub_query_correlated_subquery5 WHERE
sub_query_correlated_subquery1.k2 = sub_query_correlated_subquery3.v1 and
sub_query_correlated_subquery3.v1 = sub_query_correlated_subquery5.k1))
"""
+
+ order_qt_doris_6937 """
+ SELECT *
+ FROM sub_query_correlated_subquery1
+ WHERE EXISTS
+ (SELECT k1
+ FROM sub_query_correlated_subquery3
+ WHERE sub_query_correlated_subquery1.k1 >
sub_query_correlated_subquery3.v1)
+ OR k1 < 10;
+ """
+
+ order_qt_doris_6937_2 """
+ select * from sub_query_correlated_subquery1 where
sub_query_correlated_subquery1.k1 not in (select
sub_query_correlated_subquery3.k3 from sub_query_correlated_subquery3 where
sub_query_correlated_subquery3.v2 > sub_query_correlated_subquery1.k2) or k1 <
10 order by k1, k2;
+ """
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]