This is an automated email from the ASF dual-hosted git repository. mrhhsg 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 e98b4b3a838 [fix](union) union source operator hold too many blocks from children (#32717) e98b4b3a838 is described below commit e98b4b3a8381f0917ca47b6cfc130d5efa162f43 Author: Jerry Hu <mrh...@gmail.com> AuthorDate: Mon Mar 25 17:49:54 2024 +0800 [fix](union) union source operator hold too many blocks from children (#32717) --- be/src/pipeline/exec/union_source_operator.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/be/src/pipeline/exec/union_source_operator.cpp b/be/src/pipeline/exec/union_source_operator.cpp index 9ddf726700c..de0348de508 100644 --- a/be/src/pipeline/exec/union_source_operator.cpp +++ b/be/src/pipeline/exec/union_source_operator.cpp @@ -165,8 +165,10 @@ Status UnionSourceOperatorX::get_block(RuntimeState* state, vectorized::Block* b Defer set_eos {[&]() { //have executing const expr, queue have no data anymore, and child could be closed *eos = (_child_size == 0 && !local_state._need_read_for_const_expr) || - (_child_size > 0 && local_state._shared_state->data_queue.is_all_finish() && - !_has_data(state)); + // here should check `_has_data` first, or when `is_all_finish` is false, + // the data queue will have no chance to change the `_flag_queue_idx`. + (!_has_data(state) && _child_size > 0 && + local_state._shared_state->data_queue.is_all_finish()); }}; SCOPED_TIMER(local_state.exec_time_counter()); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org