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

morrysnow pushed a commit to branch runtimefilter_multi_send
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/runtimefilter_multi_send by 
this push:
     new 25fbfdb2a2 [fix]Do filter before projection on multi cast sender 
(#21411)
25fbfdb2a2 is described below

commit 25fbfdb2a2865ac4d79b45427afd03b2d6a7741b
Author: Jerry Hu <[email protected]>
AuthorDate: Sun Jul 2 00:34:19 2023 +0800

    [fix]Do filter before projection on multi cast sender (#21411)
---
 be/src/pipeline/exec/multi_cast_data_stream_source.cpp | 12 ++++++------
 be/src/vec/exec/vselect_node.h                         |  1 +
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/be/src/pipeline/exec/multi_cast_data_stream_source.cpp 
b/be/src/pipeline/exec/multi_cast_data_stream_source.cpp
index 3ef7100063..dfb5334906 100644
--- a/be/src/pipeline/exec/multi_cast_data_stream_source.cpp
+++ b/be/src/pipeline/exec/multi_cast_data_stream_source.cpp
@@ -86,6 +86,12 @@ Status 
MultiCastDataStreamerSourceOperator::get_block(RuntimeState* state, vecto
                                                       SourceState& 
source_state) {
     bool eos = false;
     _multi_cast_data_streamer->pull(_consumer_id, block, &eos);
+
+    if (!_conjuncts.empty()) {
+        RETURN_IF_ERROR(
+                vectorized::VExprContext::filter_block(_conjuncts, block, 
block->columns()));
+    }
+
     if (!_output_expr_contexts.empty()) {
         vectorized::Block output_block;
         
RETURN_IF_ERROR(vectorized::VExprContext::get_output_block_after_execute_exprs(
@@ -93,12 +99,6 @@ Status 
MultiCastDataStreamerSourceOperator::get_block(RuntimeState* state, vecto
         materialize_block_inplace(output_block);
         block->swap(output_block);
     }
-
-    if (!_conjuncts.empty()) {
-        RETURN_IF_ERROR(
-                vectorized::VExprContext::filter_block(_conjuncts, block, 
block->columns()));
-    }
-
     if (eos) {
         source_state = SourceState::FINISHED;
     }
diff --git a/be/src/vec/exec/vselect_node.h b/be/src/vec/exec/vselect_node.h
index 1b425e80af..d6783d7237 100644
--- a/be/src/vec/exec/vselect_node.h
+++ b/be/src/vec/exec/vselect_node.h
@@ -37,6 +37,7 @@ public:
     Status get_next(RuntimeState* state, vectorized::Block* block, bool* eos) 
override;
     Status close(RuntimeState* state) override;
     Status pull(RuntimeState* state, vectorized::Block* output_block, bool* 
eos) override;
+
 private:
     // true if last get_next() call on child signalled eos
     bool _child_eos;


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to