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]