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 <pxl...@qq.com> 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: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org