diff --git a/be/src/vec/exprs/vruntimefilter_wrapper.cpp b/be/src/vec/exprs/vruntimefilter_wrapper.cpp index c038e019aaa516..bbd466327819f6 100644 --- a/be/src/vec/exprs/vruntimefilter_wrapper.cpp +++ b/be/src/vec/exprs/vruntimefilter_wrapper.cpp @@ -92,6 +92,9 @@ Status VRuntimeFilterWrapper::execute(VExprContext* context, Block* block, int* DCHECK(_open_finished || _getting_const_col); DCHECK(_expr_filtered_rows_counter && _expr_input_rows_counter && _always_true_counter) << "rf counter must be initialized"; + if (_judge_counter.fetch_sub(1) == 0) { + reset_judge_selectivity(); + } if (_always_true) { size_t size = block->rows(); block->insert({create_always_true_column(size, _data_type->is_nullable()), _data_type, diff --git a/be/src/vec/exprs/vruntimefilter_wrapper.h b/be/src/vec/exprs/vruntimefilter_wrapper.h index 500a1dbb61bcc0..477d0dc8b1b486 100644 --- a/be/src/vec/exprs/vruntimefilter_wrapper.h +++ b/be/src/vec/exprs/vruntimefilter_wrapper.h @@ -88,10 +88,6 @@ class VRuntimeFilterWrapper final : public VExpr { void do_judge_selectivity(int64_t filter_rows, int64_t input_rows) override { update_counters(filter_rows, input_rows); - if (_judge_counter.fetch_sub(1) == 0) { - reset_judge_selectivity(); - } - if (!_always_true) { _judge_filter_rows += filter_rows; _judge_input_rows += input_rows;