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

Reply via email to