Skip to content

Commit caa02b4

Browse files
authored
[refactor](be) Rename runtime filter expression wrapper (#63489)
### What problem does this PR solve? Issue Number: None Related PR: None Problem Summary: Rename the BE runtime filter expression wrapper from `VRuntimeFilterWrapper` to `RuntimeFilterExpr`. Also rename the implementation/header/test files to `runtime_filter_expr.*` and update the associated pointer alias, usages, includes, comments, and tests to use the new name consistently. ### Release note None ### Check List (For Author) - Test: Compile check / Format check - `DORIS_HOME=/mnt/disk7/hushenggang/doris ninja -C be/ut_build_ASAN src/exprs/CMakeFiles/Exprs.dir/runtime_filter_expr.cpp.o src/exec/CMakeFiles/Exec.dir/runtime_filter/runtime_filter_consumer.cpp.o src/exec/CMakeFiles/Exec.dir/runtime_filter/runtime_filter_consumer_helper.cpp.o src/exec/CMakeFiles/Exec.dir/operator/scan_operator.cpp.o src/format/CMakeFiles/Format.dir/parquet/vparquet_reader.cpp.o src/format/CMakeFiles/Format.dir/orc/vorc_reader.cpp.o test/CMakeFiles/doris_be_test.dir/exec/runtime_filter/runtime_filter_expr_sampling_test.cpp.o test/CMakeFiles/doris_be_test.dir/exec/runtime_filter/runtime_filter_consumer_test.cpp.o` - `build-support/clang-format.sh` - `build-support/check-format.sh` - `git diff --check` - Behavior changed: No - Does this need documentation: No
1 parent cbe23a3 commit caa02b4

15 files changed

Lines changed: 80 additions & 82 deletions

be/src/exec/operator/scan_operator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@
3737
#include "exec/runtime_filter/runtime_filter_consumer_helper.h"
3838
#include "exec/scan/scanner_context.h"
3939
#include "exprs/function/in.h"
40+
#include "exprs/runtime_filter_expr.h"
4041
#include "exprs/vcast_expr.h"
4142
#include "exprs/vectorized_fn_call.h"
4243
#include "exprs/vexpr.h"
4344
#include "exprs/vexpr_context.h"
4445
#include "exprs/vexpr_fwd.h"
4546
#include "exprs/vin_predicate.h"
4647
#include "exprs/virtual_slot_ref.h"
47-
#include "exprs/vruntimefilter_wrapper.h"
4848
#include "exprs/vslot_ref.h"
4949
#include "exprs/vtopn_pred.h"
5050
#include "runtime/descriptors.h"
@@ -386,7 +386,7 @@ Status ScanLocalState<Derived>::_normalize_predicate(VExprContext* context, cons
386386
{
387387
Defer attach_defer = [&]() {
388388
if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
389-
auto* rf_expr = assert_cast<VRuntimeFilterWrapper*>(root.get());
389+
auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
390390
_slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
391391
rf_expr->filter_id(),
392392
rf_expr->predicate_filtered_rows_counter(),

be/src/exec/runtime_filter/runtime_filter_consumer.cpp

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
#include "runtime/runtime_profile.h"
2626

2727
namespace doris {
28-
Status RuntimeFilterConsumer::_apply_ready_expr(std::vector<VRuntimeFilterPtr>& push_exprs) {
28+
Status RuntimeFilterConsumer::_apply_ready_expr(std::vector<RuntimeFilterExprPtr>& push_exprs) {
2929
_check_state({State::READY});
3030
_set_state(State::APPLIED);
3131

@@ -43,7 +43,7 @@ Status RuntimeFilterConsumer::_apply_ready_expr(std::vector<VRuntimeFilterPtr>&
4343
return Status::OK();
4444
}
4545

46-
Status RuntimeFilterConsumer::acquire_expr(std::vector<VRuntimeFilterPtr>& push_exprs) {
46+
Status RuntimeFilterConsumer::acquire_expr(std::vector<RuntimeFilterExprPtr>& push_exprs) {
4747
std::unique_lock<std::recursive_mutex> l(_rmtx);
4848
if (_rf_state == State::READY) {
4949
RETURN_IF_ERROR(_apply_ready_expr(push_exprs));
@@ -74,7 +74,7 @@ std::shared_ptr<RuntimeFilterTimer> RuntimeFilterConsumer::create_filter_timer(
7474
return timer;
7575
}
7676

77-
Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& container,
77+
Status RuntimeFilterConsumer::_get_push_exprs(std::vector<RuntimeFilterExprPtr>& container,
7878
const TExpr& probe_expr) {
7979
// TODO: `VExprContextSPtr` is not need, we should just create an expr.
8080
VExprContextSPtr probe_ctx;
@@ -84,7 +84,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
8484
bool null_aware = _wrapper->contain_null();
8585

8686
// Determine sampling frequency for the always_true optimization.
87-
// This will be propagated to VExprContext in VRuntimeFilterWrapper::open().
87+
// This will be propagated to VExprContext in RuntimeFilterExpr::open().
8888
int sampling_frequency = _wrapper->disable_always_true_logic()
8989
? RuntimeFilterSelectivity::DISABLE_SAMPLING
9090
: config::runtime_filter_sampling_frequency;
@@ -103,7 +103,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
103103
node.__set_is_nullable(false);
104104
auto in_pred = VDirectInPredicate::create_shared(node, _wrapper->hybrid_set());
105105
in_pred->add_child(probe_ctx->root());
106-
auto wrapper = VRuntimeFilterWrapper::create_shared(
106+
auto wrapper = RuntimeFilterExpr::create_shared(
107107
node, in_pred, get_in_list_ignore_thredhold(_wrapper->hybrid_set()->size()),
108108
null_aware, _wrapper->filter_id(), sampling_frequency);
109109
container.push_back(wrapper);
@@ -123,7 +123,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
123123
if (null_aware) {
124124
return Status::InternalError("only min predicate do not support null aware");
125125
}
126-
container.push_back(VRuntimeFilterWrapper::create_shared(
126+
container.push_back(RuntimeFilterExpr::create_shared(
127127
min_pred_node, min_pred, get_comparison_ignore_thredhold(), null_aware,
128128
_wrapper->filter_id(), sampling_frequency));
129129
break;
@@ -142,7 +142,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
142142
if (null_aware) {
143143
return Status::InternalError("only max predicate do not support null aware");
144144
}
145-
container.push_back(VRuntimeFilterWrapper::create_shared(
145+
container.push_back(RuntimeFilterExpr::create_shared(
146146
max_pred_node, max_pred, get_comparison_ignore_thredhold(), null_aware,
147147
_wrapper->filter_id(), sampling_frequency));
148148
break;
@@ -158,7 +158,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
158158
_wrapper->minmax_func()->get_max(), max_literal));
159159
max_pred->add_child(probe_ctx->root());
160160
max_pred->add_child(max_literal);
161-
container.push_back(VRuntimeFilterWrapper::create_shared(
161+
container.push_back(RuntimeFilterExpr::create_shared(
162162
max_pred_node, max_pred, get_comparison_ignore_thredhold(), null_aware,
163163
_wrapper->filter_id(), sampling_frequency));
164164

@@ -175,7 +175,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
175175
_wrapper->minmax_func()->get_min(), min_literal));
176176
min_pred->add_child(new_probe_ctx->root());
177177
min_pred->add_child(min_literal);
178-
container.push_back(VRuntimeFilterWrapper::create_shared(
178+
container.push_back(RuntimeFilterExpr::create_shared(
179179
min_pred_node, min_pred, get_comparison_ignore_thredhold(), null_aware,
180180
_wrapper->filter_id(), sampling_frequency));
181181
break;
@@ -192,7 +192,7 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
192192
auto bloom_pred = VBloomPredicate::create_shared(node);
193193
bloom_pred->set_filter(_wrapper->bloom_filter_func());
194194
bloom_pred->add_child(probe_ctx->root());
195-
auto wrapper = VRuntimeFilterWrapper::create_shared(
195+
auto wrapper = RuntimeFilterExpr::create_shared(
196196
node, bloom_pred, get_bloom_filter_ignore_thredhold(), null_aware,
197197
_wrapper->filter_id(), sampling_frequency);
198198
container.push_back(wrapper);
@@ -213,8 +213,8 @@ Status RuntimeFilterConsumer::_get_push_exprs(std::vector<VRuntimeFilterPtr>& co
213213
if (null_aware) {
214214
return Status::InternalError("bitmap predicate do not support null aware");
215215
}
216-
auto wrapper = VRuntimeFilterWrapper::create_shared(
217-
node, bitmap_pred, 0, null_aware, _wrapper->filter_id(), sampling_frequency);
216+
auto wrapper = RuntimeFilterExpr::create_shared(node, bitmap_pred, 0, null_aware,
217+
_wrapper->filter_id(), sampling_frequency);
218218
container.push_back(wrapper);
219219
break;
220220
}

be/src/exec/runtime_filter/runtime_filter_consumer.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030
namespace doris {
3131
// Work on ScanNode or MultiCastDataStreamSource, RuntimeFilterConsumerHelper will manage all RuntimeFilterConsumer
32-
// Used to create VRuntimeFilterWrapper to filter data
32+
// Used to create RuntimeFilterExpr to filter data
3333
class RuntimeFilterConsumer : public RuntimeFilter {
3434
public:
3535
// NOT_READY (-> TIMEOUT) -> READY -> APPLIED
@@ -55,7 +55,7 @@ class RuntimeFilterConsumer : public RuntimeFilter {
5555
std::shared_ptr<Dependency> dependencies);
5656

5757
// Called after `State` is ready (e.g. signaled)
58-
Status acquire_expr(std::vector<VRuntimeFilterPtr>& push_exprs);
58+
Status acquire_expr(std::vector<RuntimeFilterExprPtr>& push_exprs);
5959

6060
std::string debug_string() override {
6161
std::unique_lock<std::recursive_mutex> l(_rmtx);
@@ -100,9 +100,9 @@ class RuntimeFilterConsumer : public RuntimeFilter {
100100
DorisMetrics::instance()->runtime_filter_consumer_num->increment(1);
101101
}
102102

103-
Status _apply_ready_expr(std::vector<VRuntimeFilterPtr>& push_exprs);
103+
Status _apply_ready_expr(std::vector<RuntimeFilterExprPtr>& push_exprs);
104104

105-
Status _get_push_exprs(std::vector<VRuntimeFilterPtr>& container, const TExpr& probe_expr);
105+
Status _get_push_exprs(std::vector<RuntimeFilterExprPtr>& container, const TExpr& probe_expr);
106106
void _check_state(std::vector<State> assumed_states) {
107107
if (!check_state_impl<RuntimeFilterConsumer>(_rf_state, assumed_states)) {
108108
throw Exception(ErrorCode::INTERNAL_ERROR,
@@ -139,9 +139,9 @@ class RuntimeFilterConsumer : public RuntimeFilter {
139139
std::make_shared<RuntimeProfile::Counter>(TUnit::TIME_NS, 0);
140140
//_rf_filter is used to record the number of rows filtered by the runtime filter.
141141
//It aggregates the filtering statistics from both the Storage and Execution.
142-
// Counter will be shared by RuntimeFilterConsumer & VRuntimeFilterWrapper
142+
// Counter will be shared by RuntimeFilterConsumer & RuntimeFilterExpr
143143
// OperatorLocalState's close method will collect the statistics from RuntimeFilterConsumer
144-
// VRuntimeFilterWrapper will update the statistics.
144+
// RuntimeFilterExpr will update the statistics.
145145
std::shared_ptr<RuntimeProfile::Counter> _rf_filter =
146146
std::make_shared<RuntimeProfile::Counter>(TUnit::UNIT, 0, 1);
147147
std::shared_ptr<RuntimeProfile::Counter> _rf_input =

be/src/exec/runtime_filter/runtime_filter_consumer_helper.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Status RuntimeFilterConsumerHelper::acquire_runtime_filter(RuntimeState* state,
6767
VExprContextSPtrs& conjuncts,
6868
const RowDescriptor& row_descriptor) {
6969
SCOPED_TIMER(_acquire_runtime_filter_timer.get());
70-
std::vector<VRuntimeFilterPtr> vexprs;
70+
std::vector<RuntimeFilterExprPtr> vexprs;
7171
for (const auto& consumer : _consumers) {
7272
RETURN_IF_ERROR(consumer->acquire_expr(vexprs));
7373
if (!consumer->is_applied()) {
@@ -79,7 +79,7 @@ Status RuntimeFilterConsumerHelper::acquire_runtime_filter(RuntimeState* state,
7979
}
8080

8181
Status RuntimeFilterConsumerHelper::_append_rf_into_conjuncts(
82-
RuntimeState* state, const std::vector<VRuntimeFilterPtr>& vexprs,
82+
RuntimeState* state, const std::vector<RuntimeFilterExprPtr>& vexprs,
8383
VExprContextSPtrs& conjuncts, const RowDescriptor& row_descriptor) {
8484
if (vexprs.empty()) {
8585
return Status::OK();
@@ -112,7 +112,7 @@ Status RuntimeFilterConsumerHelper::try_append_late_arrival_runtime_filter(
112112
}
113113

114114
// 1. Check if are runtime filter ready but not applied.
115-
std::vector<VRuntimeFilterPtr> exprs;
115+
std::vector<RuntimeFilterExprPtr> exprs;
116116
int current_arrived_rf_num = 0;
117117
for (const auto& consumer : _consumers) {
118118
RETURN_IF_ERROR(consumer->acquire_expr(exprs));

be/src/exec/runtime_filter/runtime_filter_consumer_helper.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#include <mutex>
2121

2222
#include "exec/pipeline/dependency.h"
23-
#include "exprs/vruntimefilter_wrapper.h"
23+
#include "exprs/runtime_filter_expr.h"
2424
#include "runtime/runtime_profile.h"
2525

2626
namespace doris {
@@ -56,7 +56,7 @@ class RuntimeFilterConsumerHelper {
5656
private:
5757
// Append late-arrival runtime filters to the vconjunct_ctx.
5858
Status _append_rf_into_conjuncts(RuntimeState* state,
59-
const std::vector<VRuntimeFilterPtr>& vexprs,
59+
const std::vector<RuntimeFilterExprPtr>& vexprs,
6060
VExprContextSPtrs& conjuncts,
6161
const RowDescriptor& row_descriptor);
6262

be/src/exec/runtime_filter/runtime_filter_wrapper.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727

2828
namespace doris {
2929
class BloomFilterFuncBase;
30-
class VRuntimeFilterWrapper;
31-
using VRuntimeFilterPtr = std::shared_ptr<VRuntimeFilterWrapper>;
30+
class RuntimeFilterExpr;
31+
using RuntimeFilterExprPtr = std::shared_ptr<RuntimeFilterExpr>;
3232

3333
// This class is a wrapper of runtime predicate function
3434
class RuntimeFilterWrapper {
Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
#include "exprs/vruntimefilter_wrapper.h"
18+
#include "exprs/runtime_filter_expr.h"
1919

2020
#include <fmt/format.h>
2121

@@ -54,51 +54,49 @@ namespace doris {
5454

5555
class VExprContext;
5656

57-
VRuntimeFilterWrapper::VRuntimeFilterWrapper(const TExprNode& node, VExprSPtr impl,
58-
double ignore_thredhold, bool null_aware,
59-
int filter_id, int sampling_frequency)
57+
RuntimeFilterExpr::RuntimeFilterExpr(const TExprNode& node, VExprSPtr impl, double ignore_thredhold,
58+
bool null_aware, int filter_id, int sampling_frequency)
6059
: VExpr(node),
6160
_impl(std::move(impl)),
6261
_ignore_thredhold(ignore_thredhold),
6362
_null_aware(null_aware),
6463
_filter_id(filter_id),
6564
_sampling_frequency(sampling_frequency) {}
6665

67-
Status VRuntimeFilterWrapper::prepare(RuntimeState* state, const RowDescriptor& desc,
68-
VExprContext* context) {
66+
Status RuntimeFilterExpr::prepare(RuntimeState* state, const RowDescriptor& desc,
67+
VExprContext* context) {
6968
RETURN_IF_ERROR_OR_PREPARED(_impl->prepare(state, desc, context));
70-
_expr_name = fmt::format("VRuntimeFilterWrapper({})", _impl->expr_name());
69+
_expr_name = fmt::format("RuntimeFilterExpr({})", _impl->expr_name());
7170
_prepare_finished = true;
7271
return Status::OK();
7372
}
7473

75-
Status VRuntimeFilterWrapper::open(RuntimeState* state, VExprContext* context,
76-
FunctionContext::FunctionStateScope scope) {
74+
Status RuntimeFilterExpr::open(RuntimeState* state, VExprContext* context,
75+
FunctionContext::FunctionStateScope scope) {
7776
DCHECK(_prepare_finished);
7877
RETURN_IF_ERROR(_impl->open(state, context, scope));
7978
context->get_runtime_filter_selectivity().set_sampling_frequency(_sampling_frequency);
8079
_open_finished = true;
8180
return Status::OK();
8281
}
8382

84-
void VRuntimeFilterWrapper::close(VExprContext* context,
85-
FunctionContext::FunctionStateScope scope) {
83+
void RuntimeFilterExpr::close(VExprContext* context, FunctionContext::FunctionStateScope scope) {
8684
_impl->close(context, scope);
8785
}
8886

89-
Status VRuntimeFilterWrapper::execute_column_impl(VExprContext* context, const Block* block,
90-
const Selector* selector, size_t count,
91-
ColumnPtr& result_column) const {
92-
return Status::InternalError("Not implement VRuntimeFilterWrapper::execute_column_impl");
87+
Status RuntimeFilterExpr::execute_column_impl(VExprContext* context, const Block* block,
88+
const Selector* selector, size_t count,
89+
ColumnPtr& result_column) const {
90+
return Status::InternalError("Not implement RuntimeFilterExpr::execute_column_impl");
9391
}
9492

95-
const std::string& VRuntimeFilterWrapper::expr_name() const {
93+
const std::string& RuntimeFilterExpr::expr_name() const {
9694
return _expr_name;
9795
}
9896

99-
Status VRuntimeFilterWrapper::execute_filter(VExprContext* context, const Block* block,
100-
uint8_t* __restrict result_filter_data, size_t rows,
101-
bool accept_null, bool* can_filter_all) const {
97+
Status RuntimeFilterExpr::execute_filter(VExprContext* context, const Block* block,
98+
uint8_t* __restrict result_filter_data, size_t rows,
99+
bool accept_null, bool* can_filter_all) const {
102100
DCHECK(_open_finished);
103101
if (accept_null) {
104102
return Status::InternalError(
Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,14 @@ namespace doris {
4646
class Block;
4747
class VExprContext;
4848

49-
class VRuntimeFilterWrapper final : public VExpr {
50-
ENABLE_FACTORY_CREATOR(VRuntimeFilterWrapper);
49+
class RuntimeFilterExpr final : public VExpr {
50+
ENABLE_FACTORY_CREATOR(RuntimeFilterExpr);
5151

5252
public:
53-
VRuntimeFilterWrapper(const TExprNode& node, VExprSPtr impl, double ignore_thredhold,
54-
bool null_aware, int filter_id,
55-
int sampling_frequency = RuntimeFilterSelectivity::DISABLE_SAMPLING);
56-
~VRuntimeFilterWrapper() override = default;
53+
RuntimeFilterExpr(const TExprNode& node, VExprSPtr impl, double ignore_thredhold,
54+
bool null_aware, int filter_id,
55+
int sampling_frequency = RuntimeFilterSelectivity::DISABLE_SAMPLING);
56+
~RuntimeFilterExpr() override = default;
5757
Status execute_column_impl(VExprContext* context, const Block* block, const Selector* selector,
5858
size_t count, ColumnPtr& result_column) const override;
5959
Status prepare(RuntimeState* state, const RowDescriptor& desc, VExprContext* context) override;
@@ -130,6 +130,6 @@ class VRuntimeFilterWrapper final : public VExpr {
130130
int _sampling_frequency;
131131
};
132132

133-
using VRuntimeFilterPtr = std::shared_ptr<VRuntimeFilterWrapper>;
133+
using RuntimeFilterExprPtr = std::shared_ptr<RuntimeFilterExpr>;
134134

135-
} // namespace doris
135+
} // namespace doris

be/src/format/orc/vorc_reader.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@
2929
#include <limits>
3030
#include <list>
3131

32+
#include "exprs/runtime_filter_expr.h"
3233
#include "exprs/vdirect_in_predicate.h"
3334
#include "exprs/vexpr.h"
34-
#include "exprs/vruntimefilter_wrapper.h"
3535
#include "exprs/vslot_ref.h"
3636
#include "exprs/vtopn_pred.h"
3737

@@ -75,13 +75,13 @@
7575
#include "exec/scan/file_scanner.h"
7676
#include "exprs/create_predicate_function.h"
7777
#include "exprs/hybrid_set.h"
78+
#include "exprs/runtime_filter_expr.h"
7879
#include "exprs/vbloom_predicate.h"
7980
#include "exprs/vdirect_in_predicate.h"
8081
#include "exprs/vectorized_fn_call.h"
8182
#include "exprs/vexpr_context.h"
8283
#include "exprs/vexpr_fwd.h"
8384
#include "exprs/vin_predicate.h"
84-
#include "exprs/vruntimefilter_wrapper.h"
8585
#include "format/orc/orc_file_reader.h"
8686
#include "format/table/iceberg_reader.h"
8787
#include "format/table/transactional_hive_common.h"
@@ -1228,7 +1228,7 @@ void OrcReader::_collect_predicate_columns_from_conjuncts(
12281228
auto expr = conjunct->root();
12291229

12301230
if (expr->is_rf_wrapper()) {
1231-
auto* runtime_filter = static_cast<VRuntimeFilterWrapper*>(expr.get());
1231+
auto* runtime_filter = static_cast<RuntimeFilterExpr*>(expr.get());
12321232
auto filter_impl = runtime_filter->get_impl();
12331233
visit_slot(filter_impl.get());
12341234

be/src/format/parquet/vparquet_reader.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,12 @@
3535
#include "core/typeid_cast.h"
3636
#include "core/types.h"
3737
#include "exec/scan/file_scanner.h"
38+
#include "exprs/runtime_filter_expr.h"
3839
#include "exprs/vbloom_predicate.h"
3940
#include "exprs/vdirect_in_predicate.h"
4041
#include "exprs/vexpr.h"
4142
#include "exprs/vexpr_context.h"
4243
#include "exprs/vin_predicate.h"
43-
#include "exprs/vruntimefilter_wrapper.h"
4444
#include "exprs/vslot_ref.h"
4545
#include "exprs/vtopn_pred.h"
4646
#include "format/column_type_convert.h"
@@ -599,7 +599,7 @@ void ParquetReader::_collect_predicate_columns_from_conjuncts(
599599
for (const auto& conjunct : _lazy_read_ctx.conjuncts) {
600600
auto expr = conjunct->root();
601601
if (expr->is_rf_wrapper()) {
602-
VRuntimeFilterWrapper* runtime_filter = assert_cast<VRuntimeFilterWrapper*>(expr.get());
602+
RuntimeFilterExpr* runtime_filter = assert_cast<RuntimeFilterExpr*>(expr.get());
603603
auto filter_impl = runtime_filter->get_impl();
604604
visit_slot(filter_impl.get());
605605
} else {

0 commit comments

Comments
 (0)