This is an automated email from the ASF dual-hosted git repository.

yiguolei 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 93f5e440eb [Bug](execute) fix get next non stop for eos on streaming 
preagg (#15611)
93f5e440eb is described below

commit 93f5e440eba18940bb389ad38b0ee8ef5df60668
Author: Pxl <pxl...@qq.com>
AuthorDate: Thu Jan 5 09:36:11 2023 +0800

    [Bug](execute) fix get next non stop for eos on streaming preagg (#15611)
    
    * fix get nnext non stop for eos on streaming preagg
    
    * update
---
 be/src/vec/exec/vaggregation_node.cpp | 12 +++++-------
 be/src/vec/exec/vaggregation_node.h   |  1 +
 2 files changed, 6 insertions(+), 7 deletions(-)

diff --git a/be/src/vec/exec/vaggregation_node.cpp 
b/be/src/vec/exec/vaggregation_node.cpp
index 6884d7b17d..2e3330f0a5 100644
--- a/be/src/vec/exec/vaggregation_node.cpp
+++ b/be/src/vec/exec/vaggregation_node.cpp
@@ -522,21 +522,19 @@ Status AggregationNode::get_next(RuntimeState* state, 
Block* block, bool* eos) {
     SCOPED_TIMER(_runtime_profile->total_time_counter());
 
     if (_is_streaming_preagg) {
-        bool child_eos = false;
-
         RETURN_IF_CANCELLED(state);
-        do {
-            release_block_memory(_preagg_block);
+        release_block_memory(_preagg_block);
+        while (_preagg_block.rows() == 0 && !_child_eos) {
             RETURN_IF_ERROR_AND_CHECK_SPAN(
                     _children[0]->get_next_after_projects(
-                            state, &_preagg_block, &child_eos,
+                            state, &_preagg_block, &_child_eos,
                             std::bind((Status(ExecNode::*)(RuntimeState*, 
vectorized::Block*,
                                                            bool*)) &
                                               ExecNode::get_next,
                                       _children[0], std::placeholders::_1, 
std::placeholders::_2,
                                       std::placeholders::_3)),
-                    _children[0]->get_next_span(), child_eos);
-        } while (_preagg_block.rows() == 0 && !child_eos);
+                    _children[0]->get_next_span(), _child_eos);
+        };
         {
             SCOPED_CONSUME_MEM_TRACKER(mem_tracker_growh());
             if (_preagg_block.rows() != 0) {
diff --git a/be/src/vec/exec/vaggregation_node.h 
b/be/src/vec/exec/vaggregation_node.h
index bb40c7f509..520e6b1511 100644
--- a/be/src/vec/exec/vaggregation_node.h
+++ b/be/src/vec/exec/vaggregation_node.h
@@ -845,6 +845,7 @@ private:
     bool _is_streaming_preagg;
     Block _preagg_block = Block();
     bool _should_expand_hash_table = true;
+    bool _child_eos = false;
 
     bool _should_limit_output = false;
     bool _reach_limit = false;


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to