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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]