Coverage Report

Created: 2026-10-29 19:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exec/operator/scan_operator.cpp
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#include "exec/operator/scan_operator.h"
19
20
#include <fmt/format.h>
21
#include <gen_cpp/Exprs_types.h>
22
#include <gen_cpp/Metrics_types.h>
23
24
#include <algorithm>
25
#include <cstdint>
26
#include <memory>
27
28
#include "common/global_types.h"
29
#include "core/data_type/data_type.h"
30
#include "core/data_type/data_type_array.h"
31
#include "exec/operator/file_scan_operator.h"
32
#include "exec/operator/group_commit_scan_operator.h"
33
#include "exec/operator/jdbc_scan_operator.h"
34
#include "exec/operator/meta_scan_operator.h"
35
#include "exec/operator/mock_scan_operator.h"
36
#include "exec/operator/olap_scan_operator.h"
37
#include "exec/operator/operator.h"
38
#include "exec/runtime_filter/runtime_filter_consumer_helper.h"
39
#include "exec/scan/scanner_context.h"
40
#include "exprs/function/in.h"
41
#include "exprs/runtime_filter_expr.h"
42
#include "exprs/vcast_expr.h"
43
#include "exprs/vectorized_fn_call.h"
44
#include "exprs/vexpr.h"
45
#include "exprs/vexpr_context.h"
46
#include "exprs/vexpr_fwd.h"
47
#include "exprs/vin_predicate.h"
48
#include "exprs/virtual_slot_ref.h"
49
#include "exprs/vslot_ref.h"
50
#include "exprs/vtopn_pred.h"
51
#include "runtime/descriptors.h"
52
#include "runtime/runtime_profile.h"
53
#include "runtime/runtime_profile_counter_names.h"
54
#include "storage/predicate/like_column_predicate.h"
55
#include "storage/predicate/null_predicate.h"
56
#include "storage/predicate/predicate_creator.h"
57
58
namespace doris {
59
60
#define RETURN_IF_PUSH_DOWN(stmt, status)    \
61
100
    if (pdt == PushDownType::UNACCEPTABLE) { \
62
100
        status = stmt;                       \
63
100
        if (!status.ok()) {                  \
64
0
            return;                          \
65
0
        }                                    \
66
100
    } else {                                 \
67
0
        return;                              \
68
0
    }
69
70
template <typename Derived>
71
48
bool ScanLocalState<Derived>::should_run_serial() const {
72
48
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
73
48
}
_ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE17should_run_serialEv
Line
Count
Source
71
40
bool ScanLocalState<Derived>::should_run_serial() const {
72
40
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
73
40
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17should_run_serialEv
_ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE17should_run_serialEv
Line
Count
Source
71
8
bool ScanLocalState<Derived>::should_run_serial() const {
72
8
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
73
8
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE17should_run_serialEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17should_run_serialEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE17should_run_serialEv
74
75
Status ScanLocalStateBase::update_late_arrival_runtime_filter(RuntimeState* state,
76
5
                                                              int& arrived_rf_num) {
77
    // Lock needed because _conjuncts can be accessed concurrently by multiple scanner threads.
78
5
    LockGuard lock(_conjuncts_lock);
79
5
    size_t conjuncts_before = _conjuncts.size();
80
5
    RETURN_IF_ERROR(_helper.try_append_late_arrival_runtime_filter(
81
5
            state, _parent->operator_row_desc_before_projection(), arrived_rf_num, _conjuncts));
82
5
    VExprContextSPtrs new_conjuncts;
83
5
    if (_conjuncts.size() > conjuncts_before) {
84
1
        new_conjuncts.assign(_conjuncts.begin() + conjuncts_before, _conjuncts.end());
85
1
    }
86
5
    if (state->enable_adjust_conjunct_order_by_cost()) {
87
0
        std::ranges::stable_sort(_conjuncts, [](const auto& a, const auto& b) {
88
0
            return a->execute_cost() < b->execute_cost();
89
0
        });
90
0
    }
91
5
    if (new_conjuncts.empty()) {
92
4
        return Status::OK();
93
4
    }
94
    // Partition projection executes the shared expression tree. Keep it serialized with
95
    // clone_conjunct_ctxs(), whose VExprContext::clone() opens that same tree.
96
1
    return _on_runtime_filter_update(new_conjuncts);
97
5
}
98
99
5
Status ScanLocalStateBase::clone_conjunct_ctxs(VExprContextSPtrs& scanner_conjuncts) {
100
    // Lock needed because _conjuncts can be accessed concurrently by multiple scanner threads
101
5
    LockGuard lock(_conjuncts_lock);
102
5
    scanner_conjuncts.resize(_conjuncts.size());
103
9
    for (size_t i = 0; i != _conjuncts.size(); ++i) {
104
4
        RETURN_IF_ERROR(_conjuncts[i]->clone(_state, scanner_conjuncts[i]));
105
4
    }
106
5
    return Status::OK();
107
5
}
108
109
1
Status ScanLocalStateBase::_on_runtime_filter_update(const VExprContextSPtrs& new_conjuncts) {
110
1
    const auto* parsed = _parent->parsed_partition_boundaries();
111
1
    if (parsed != nullptr && !parsed->empty()) {
112
0
        RETURN_IF_ERROR(_do_partition_pruning_by_rf(new_conjuncts));
113
0
    }
114
1
    return Status::OK();
115
1
}
116
117
0
Status ScanLocalStateBase::_do_partition_pruning_by_rf(const VExprContextSPtrs& conjuncts) {
118
0
    if (!_state->query_options().enable_runtime_filter_partition_prune) {
119
0
        return Status::OK();
120
0
    }
121
0
    const auto* parsed = _parent->parsed_partition_boundaries();
122
0
    if (parsed == nullptr || parsed->empty()) {
123
0
        return Status::OK();
124
0
    }
125
0
    int64_t newly_pruned = 0;
126
0
    RETURN_IF_ERROR(_rf_partition_pruner.prune_by_runtime_filters(
127
0
            *parsed, conjuncts, _parent->runtime_filter_descs(), _parent->node_id(),
128
0
            &newly_pruned));
129
0
    if (newly_pruned > 0) {
130
0
        COUNTER_SET(_partitions_pruned_by_rf_counter,
131
0
                    _rf_partition_pruner.pruned_partition_count());
132
0
    }
133
0
    return Status::OK();
134
0
}
135
136
0
int ScanLocalStateBase::max_scanners_concurrency(RuntimeState* state) const {
137
    // For select * from table limit 10; should just use one thread.
138
0
    if (should_run_serial()) {
139
0
        return 1;
140
0
    }
141
    /*
142
     * The max concurrency of scanners for each ScanLocalStateBase is determined by:
143
     * 1. User specified max_scanners_concurrency which is set through session variable.
144
     * 2. Default: 4
145
     *
146
     * If this is a serial operator, the max concurrency should multiply by the number of parallel instances of the operator.
147
     */
148
0
    return (state->max_scanners_concurrency() > 0 ? state->max_scanners_concurrency() : 4) *
149
0
           (state->query_parallel_instance_num() / _parent->parallelism(state));
150
0
}
151
152
40
int ScanLocalStateBase::min_scanners_concurrency(RuntimeState* state) const {
153
40
    if (should_run_serial()) {
154
0
        return 1;
155
0
    }
156
    /*
157
     * The min concurrency of scanners for each ScanLocalStateBase is determined by:
158
     * 1. User specified min_scanners_concurrency which is set through session variable.
159
     * 2. Default: 1
160
     *
161
     * If this is a serial operator, the max concurrency should multiply by the number of parallel instances of the operator.
162
     */
163
40
    return (state->min_scanners_concurrency() > 0 ? state->min_scanners_concurrency() : 1) *
164
40
           (state->query_parallel_instance_num() / _parent->parallelism(state));
165
40
}
166
167
0
ScannerScheduler* ScanLocalStateBase::scan_scheduler(RuntimeState* state) const {
168
0
    return state->get_query_ctx()->get_scan_scheduler();
169
0
}
170
171
template <typename Derived>
172
10
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
173
10
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
174
10
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
175
10
                                                 _parent->get_name() + "_DEPENDENCY");
176
10
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
177
10
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
178
10
    SCOPED_TIMER(exec_time_counter());
179
10
    SCOPED_TIMER(_init_timer);
180
10
    auto& p = _parent->cast<typename Derived::Parent>();
181
10
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
182
10
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
183
10
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
184
10
    RETURN_IF_ERROR(_init_profile());
185
10
    set_scan_ranges(state, info.scan_ranges);
186
187
10
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
188
10
    _instance_idx = info.task_idx;
189
10
    return Status::OK();
190
10
}
_ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Line
Count
Source
172
1
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
173
1
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
174
1
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
175
1
                                                 _parent->get_name() + "_DEPENDENCY");
176
1
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
177
1
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
178
1
    SCOPED_TIMER(exec_time_counter());
179
1
    SCOPED_TIMER(_init_timer);
180
1
    auto& p = _parent->cast<typename Derived::Parent>();
181
1
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
182
1
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
183
1
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
184
1
    RETURN_IF_ERROR(_init_profile());
185
1
    set_scan_ranges(state, info.scan_ranges);
186
187
1
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
188
1
    _instance_idx = info.task_idx;
189
1
    return Status::OK();
190
1
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Line
Count
Source
172
8
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
173
8
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
174
8
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
175
8
                                                 _parent->get_name() + "_DEPENDENCY");
176
8
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
177
8
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
178
8
    SCOPED_TIMER(exec_time_counter());
179
8
    SCOPED_TIMER(_init_timer);
180
8
    auto& p = _parent->cast<typename Derived::Parent>();
181
8
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
182
8
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
183
8
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
184
8
    RETURN_IF_ERROR(_init_profile());
185
8
    set_scan_ranges(state, info.scan_ranges);
186
187
8
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
188
8
    _instance_idx = info.task_idx;
189
8
    return Status::OK();
190
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Line
Count
Source
172
1
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
173
1
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
174
1
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
175
1
                                                 _parent->get_name() + "_DEPENDENCY");
176
1
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
177
1
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
178
1
    SCOPED_TIMER(exec_time_counter());
179
1
    SCOPED_TIMER(_init_timer);
180
1
    auto& p = _parent->cast<typename Derived::Parent>();
181
1
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
182
1
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
183
1
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
184
1
    RETURN_IF_ERROR(_init_profile());
185
1
    set_scan_ranges(state, info.scan_ranges);
186
187
1
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
188
1
    _instance_idx = info.task_idx;
189
1
    return Status::OK();
190
1
}
191
192
static std::string predicates_to_string(
193
        const phmap::flat_hash_map<int, std::vector<std::shared_ptr<ColumnPredicate>>>&
194
0
                slot_id_to_predicates) {
195
0
    fmt::memory_buffer debug_string_buffer;
196
0
    for (const auto& [slot_id, predicates] : slot_id_to_predicates) {
197
0
        if (predicates.empty()) {
198
0
            continue;
199
0
        }
200
0
        fmt::format_to(debug_string_buffer, "Slot ID: {}: [", slot_id);
201
0
        for (const auto& predicate : predicates) {
202
0
            fmt::format_to(debug_string_buffer, "{{{}}}, ", predicate->debug_string());
203
0
        }
204
0
        fmt::format_to(debug_string_buffer, "] ");
205
0
    }
206
0
    return fmt::to_string(debug_string_buffer);
207
0
}
208
209
template <typename Derived>
210
0
Status ScanLocalState<Derived>::open(RuntimeState* state) {
211
0
    SCOPED_TIMER(exec_time_counter());
212
0
    SCOPED_TIMER(_open_timer);
213
0
    if (_opened) {
214
0
        return Status::OK();
215
0
    }
216
0
    RETURN_IF_ERROR(PipelineXLocalState<>::open(state));
217
0
    auto& p = _parent->cast<typename Derived::Parent>();
218
219
    // init id_file_map() for runtime state
220
0
    std::vector<SlotDescriptor*> slots = p._output_tuple_desc->slots();
221
0
    for (auto slot : slots) {
222
0
        if (slot->col_name().starts_with(BeConsts::GLOBAL_ROWID_COL)) {
223
0
            state->set_id_file_map();
224
0
        }
225
0
    }
226
227
0
    _common_expr_ctxs_push_down.resize(p._common_expr_ctxs_push_down.size());
228
0
    for (size_t i = 0; i < _common_expr_ctxs_push_down.size(); i++) {
229
0
        RETURN_IF_ERROR(
230
0
                p._common_expr_ctxs_push_down[i]->clone(state, _common_expr_ctxs_push_down[i]));
231
0
    }
232
0
    size_t conjuncts_before = _conjuncts.size();
233
0
    RETURN_IF_ERROR(_helper.acquire_runtime_filter(state, _conjuncts,
234
0
                                                   p.operator_row_desc_before_projection()));
235
0
    if (_conjuncts.size() > conjuncts_before) {
236
0
        VExprContextSPtrs new_conjuncts(_conjuncts.begin() + conjuncts_before, _conjuncts.end());
237
0
        RETURN_IF_ERROR(_on_runtime_filter_update(new_conjuncts));
238
0
    }
239
240
    // Disable condition cache in topn filter valid. TODO:: Try to support the topn filter in condition cache
241
0
    if (p._enable_condition_cache && state->query_options().condition_cache_digest &&
242
0
        p._topn_filter_source_node_ids.empty()) {
243
0
        _condition_cache_digest = state->query_options().condition_cache_digest;
244
0
        for (auto& conjunct : _conjuncts) {
245
0
            _condition_cache_digest = conjunct->get_digest(_condition_cache_digest);
246
0
            if (!_condition_cache_digest) {
247
0
                break;
248
0
            }
249
0
        }
250
0
    } else {
251
0
        _condition_cache_digest = 0;
252
0
    }
253
254
0
    RETURN_IF_ERROR(_process_conjuncts(state));
255
256
0
    if (state->enable_profile()) {
257
0
        custom_profile()->add_info_string("PushDownPredicates",
258
0
                                          predicates_to_string(_slot_id_to_predicates));
259
0
    }
260
261
0
    auto status = _eos ? Status::OK() : _prepare_scanners();
262
0
    RETURN_IF_ERROR(status);
263
0
    if (auto ctx = _scanner_ctx.load()) {
264
0
        DCHECK(!_eos && _num_scanners->value() > 0);
265
0
        RETURN_IF_ERROR(ctx->init());
266
0
    }
267
0
    _opened = true;
268
0
    return status;
269
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE4openEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE4openEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE4openEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE4openEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE4openEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE4openEPNS_12RuntimeStateE
270
271
void ScanLocalStateBase::_init_slot_value_range(
272
        phmap::flat_hash_map<int, ColumnValueRangeType>& slot_id_to_value_range,
273
1
        SlotDescriptor* slot, const DataTypePtr& type_desc) {
274
1
    switch (type_desc->get_primitive_type()) {
275
0
#define M(NAME)                                                                        \
276
1
    case TYPE_##NAME: {                                                                \
277
1
        ColumnValueRange<TYPE_##NAME> range(slot->col_name(), slot->is_nullable(),     \
278
1
                                            cast_set<int>(type_desc->get_precision()), \
279
1
                                            cast_set<int>(type_desc->get_scale()));    \
280
1
        slot_id_to_value_range[slot->id()] = std::move(range);                         \
281
1
        break;                                                                         \
282
1
    }
283
0
#define APPLY_FOR_SCALAR_TYPE(M) \
284
0
    M(TINYINT)                   \
285
0
    M(SMALLINT)                  \
286
0
    M(INT)                       \
287
0
    M(BIGINT)                    \
288
0
    M(LARGEINT)                  \
289
0
    M(FLOAT)                     \
290
0
    M(DOUBLE)                    \
291
0
    M(CHAR)                      \
292
0
    M(DATE)                      \
293
0
    M(DATETIME)                  \
294
0
    M(DATEV2)                    \
295
0
    M(DATETIMEV2)                \
296
1
    M(TIMESTAMP_NS)              \
297
1
    M(TIMESTAMPTZ)               \
298
0
    M(VARCHAR)                   \
299
0
    M(STRING)                    \
300
0
    M(DECIMAL32)                 \
301
0
    M(DECIMAL64)                 \
302
0
    M(DECIMAL128I)               \
303
0
    M(DECIMAL256)                \
304
0
    M(DECIMALV2)                 \
305
0
    M(BOOLEAN)                   \
306
0
    M(IPV4)                      \
307
0
    M(IPV6)                      \
308
0
    M(UUID)
309
1
        APPLY_FOR_SCALAR_TYPE(M)
310
0
#undef M
311
0
    default: {
312
0
        break;
313
0
    }
314
1
    }
315
1
}
316
317
/// Step 1 of the scan-key generation pipeline.
318
///
319
/// Parse SQL WHERE conjuncts into per-column ColumnValueRange objects stored in
320
/// _slot_id_to_value_range.  Each ColumnValueRange captures all constraints on
321
/// one column (fixed values from IN / =, or min/max bounds from < / <= / > / >=).
322
///
323
/// Example – "WHERE k1 IN (1, 2) AND k2 >= 5 AND k2 < 10 AND v > 100":
324
///   => ColumnValueRange<k1>: fixed_values = {1, 2}
325
///   => ColumnValueRange<k2>: scope [5, 10)  (low=5 >=, high=10 <)
326
///   => ColumnValueRange<v>:  scope (100, MAX]  (low=100 >, high=MAX <=)
327
///   The k1/k2 ranges will later become scan keys (since they're key columns);
328
///   v's range stays as a residual predicate / olap filter.
329
///
330
/// After this step, _build_key_ranges_and_filters() picks up the key-column
331
/// ColumnValueRanges and feeds them to OlapScanKeys::extend_scan_key().
332
template <typename Derived>
333
0
Status ScanLocalState<Derived>::_normalize_conjuncts(RuntimeState* state) {
334
0
    auto& p = _parent->cast<typename Derived::Parent>();
335
    // The conjuncts is always on output tuple, so use _output_tuple_desc;
336
0
    std::vector<SlotDescriptor*> slots = p._output_tuple_desc->slots();
337
338
0
    for (auto& slot : slots) {
339
0
        _init_slot_value_range(_slot_id_to_value_range, slot, slot->type());
340
0
        _slot_id_to_predicates.insert(
341
0
                {slot->id(), std::vector<std::shared_ptr<ColumnPredicate>>()});
342
0
    }
343
344
0
    get_cast_types_for_variants();
345
0
    for (const auto& [colname, type] : _cast_types_for_variants) {
346
0
        auto* slot = p._slot_id_to_slot_desc[p._colname_to_slot_id[colname]];
347
0
        _init_slot_value_range(_slot_id_to_value_range, slot, type);
348
0
        _slot_id_to_predicates.insert(
349
0
                {slot->id(), std::vector<std::shared_ptr<ColumnPredicate>>()});
350
0
    }
351
352
0
    RETURN_IF_ERROR(_get_topn_filters(state));
353
354
0
    for (auto it = _conjuncts.begin(); it != _conjuncts.end();) {
355
0
        auto& conjunct = *it;
356
0
        if (conjunct->root()) {
357
0
            VExprSPtr new_root;
358
0
            RETURN_IF_ERROR(_normalize_predicate(conjunct.get(), conjunct->root(), new_root));
359
0
            if (new_root) {
360
0
                conjunct->set_root(new_root);
361
0
                if (_should_push_down_common_expr(conjunct->root())) {
362
0
                    _common_expr_ctxs_push_down.emplace_back(conjunct);
363
0
                    it = _conjuncts.erase(it);
364
0
                    continue;
365
0
                }
366
0
            } else { // All conjuncts are pushed down as predicate column
367
0
                _stale_expr_ctxs.emplace_back(
368
0
                        conjunct); // avoid function context and constant str being freed
369
0
                it = _conjuncts.erase(it);
370
0
                continue;
371
0
            }
372
0
        }
373
0
        ++it;
374
0
    }
375
376
0
    if (state->enable_profile()) {
377
0
        std::string message;
378
0
        for (auto& conjunct : _conjuncts) {
379
0
            if (conjunct->root()) {
380
0
                if (!message.empty()) {
381
0
                    message += ", ";
382
0
                }
383
0
                message += conjunct->root()->debug_string();
384
0
            }
385
0
        }
386
0
        custom_profile()->add_info_string("RemainedPredicates", message);
387
0
    }
388
389
0
    for (auto& it : _slot_id_to_value_range) {
390
0
        std::visit(
391
0
                [&](auto&& range) {
392
0
                    if (range.is_empty_value_range()) {
393
0
                        _eos = true;
394
0
                        _scan_dependency->set_ready();
395
0
                    }
396
0
                },
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaS6_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateEENKUlOT_E_clIRNS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaS6_
397
0
                it.second);
398
0
    }
399
400
0
    return Status::OK();
401
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_conjunctsEPNS_12RuntimeStateE
402
403
template <typename Derived>
404
Status ScanLocalState<Derived>::_normalize_predicate(VExprContext* context, const VExprSPtr& root,
405
105
                                                     VExprSPtr& output_expr) {
406
105
    auto expr_root = root->is_rf_wrapper() ? root->get_impl() : root;
407
105
    PushDownType pdt = PushDownType::UNACCEPTABLE;
408
105
    if (dynamic_cast<VirtualSlotRef*>(expr_root.get())) {
409
        // If the expr has virtual slot ref, we need to keep it in the tree.
410
0
        output_expr = expr_root;
411
0
        return Status::OK();
412
0
    }
413
414
105
    SlotDescriptor* slot = nullptr;
415
105
    ColumnValueRangeType* range = nullptr;
416
105
    RETURN_IF_ERROR(_eval_const_conjuncts(context, &pdt));
417
105
    if (pdt == PushDownType::ACCEPTABLE) {
418
2
        output_expr = nullptr;
419
2
        return Status::OK();
420
2
    }
421
103
    std::shared_ptr<VSlotRef> slotref;
422
189
    for (const auto& child : expr_root->children()) {
423
189
        if (VExpr::expr_without_cast(child)->node_type() != TExprNodeType::SLOT_REF) {
424
            // not a slot ref(column)
425
87
            continue;
426
87
        }
427
102
        slotref = std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(child));
428
102
    }
429
103
    if (_is_predicate_acting_on_slot(expr_root->children(), &slot, &range)) {
430
100
        Status status = Status::OK();
431
100
        std::visit(
432
100
                [&](auto& value_range) {
433
100
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
100
                    {
435
100
                        Defer attach_defer = [&]() {
436
100
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
0
                                        rf_expr->filter_id(),
440
0
                                        rf_expr->predicate_filtered_rows_counter(),
441
0
                                        rf_expr->predicate_input_rows_counter(),
442
0
                                        rf_expr->predicate_always_true_rows_counter(),
443
0
                                        context->get_runtime_filter_selectivity());
444
0
                            }
445
100
                        };
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_ENKUlvE_clEv
_ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_ENKUlvE_clEv
Line
Count
Source
435
15
                        Defer attach_defer = [&]() {
436
15
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
0
                                        rf_expr->filter_id(),
440
0
                                        rf_expr->predicate_filtered_rows_counter(),
441
0
                                        rf_expr->predicate_input_rows_counter(),
442
0
                                        rf_expr->predicate_always_true_rows_counter(),
443
0
                                        context->get_runtime_filter_selectivity());
444
0
                            }
445
15
                        };
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_ENKUlvE_clEv
_ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_ENKUlvE_clEv
Line
Count
Source
435
63
                        Defer attach_defer = [&]() {
436
63
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
0
                                        rf_expr->filter_id(),
440
0
                                        rf_expr->predicate_filtered_rows_counter(),
441
0
                                        rf_expr->predicate_input_rows_counter(),
442
0
                                        rf_expr->predicate_always_true_rows_counter(),
443
0
                                        context->get_runtime_filter_selectivity());
444
0
                            }
445
63
                        };
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_ENKUlvE_clEv
_ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_ENKUlvE_clEv
Line
Count
Source
435
1
                        Defer attach_defer = [&]() {
436
1
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
0
                                        rf_expr->filter_id(),
440
0
                                        rf_expr->predicate_filtered_rows_counter(),
441
0
                                        rf_expr->predicate_input_rows_counter(),
442
0
                                        rf_expr->predicate_always_true_rows_counter(),
443
0
                                        context->get_runtime_filter_selectivity());
444
0
                            }
445
1
                        };
_ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Line
Count
Source
435
21
                        Defer attach_defer = [&]() {
436
21
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
0
                                        rf_expr->filter_id(),
440
0
                                        rf_expr->predicate_filtered_rows_counter(),
441
0
                                        rf_expr->predicate_input_rows_counter(),
442
0
                                        rf_expr->predicate_always_true_rows_counter(),
443
0
                                        context->get_runtime_filter_selectivity());
444
0
                            }
445
21
                        };
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_ENKUlvE_clEv
Unexecuted instantiation: _ZZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_ENKUlvE_clEv
446
100
                        switch (expr->node_type()) {
447
11
                        case TExprNodeType::IN_PRED:
448
11
                            RETURN_IF_PUSH_DOWN(
449
11
                                    _normalize_in_predicate(context, expr, slot,
450
11
                                                            _slot_id_to_predicates[slot->id()],
451
11
                                                            value_range, &pdt),
452
11
                                    status);
453
11
                            break;
454
85
                        case TExprNodeType::BINARY_PRED:
455
85
                            RETURN_IF_PUSH_DOWN(
456
85
                                    _normalize_binary_predicate(context, expr, slot,
457
85
                                                                _slot_id_to_predicates[slot->id()],
458
85
                                                                value_range, &pdt),
459
85
                                    status);
460
85
                            break;
461
4
                        case TExprNodeType::FUNCTION_CALL:
462
4
                            if (expr->is_topn_filter()) {
463
0
                                RETURN_IF_PUSH_DOWN(
464
0
                                        _normalize_topn_filter(context, expr, slot,
465
0
                                                               _slot_id_to_predicates[slot->id()],
466
0
                                                               &pdt),
467
0
                                        status);
468
4
                            } else {
469
4
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
4
                                                            context, expr, slot,
471
4
                                                            _slot_id_to_predicates[slot->id()],
472
4
                                                            value_range, &pdt),
473
4
                                                    status);
474
4
                            }
475
4
                            break;
476
4
                        case TExprNodeType::BLOOM_PRED:
477
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
0
                                                        context, root, slot,
479
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
0
                                                status);
481
0
                            break;
482
0
                        default:
483
0
                            break;
484
100
                        }
485
100
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
100
                    if (state()->enable_function_pushdown()) {
488
0
                        RETURN_IF_PUSH_DOWN(
489
0
                                _normalize_function_filters(
490
0
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
0
                                status);
492
0
                    }
493
100
                },
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE4EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE5EEEEEDaSC_
_ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE6EEEEEDaSC_
Line
Count
Source
432
15
                [&](auto& value_range) {
433
15
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
15
                    {
435
15
                        Defer attach_defer = [&]() {
436
15
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
15
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
15
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
15
                                        rf_expr->filter_id(),
440
15
                                        rf_expr->predicate_filtered_rows_counter(),
441
15
                                        rf_expr->predicate_input_rows_counter(),
442
15
                                        rf_expr->predicate_always_true_rows_counter(),
443
15
                                        context->get_runtime_filter_selectivity());
444
15
                            }
445
15
                        };
446
15
                        switch (expr->node_type()) {
447
6
                        case TExprNodeType::IN_PRED:
448
6
                            RETURN_IF_PUSH_DOWN(
449
6
                                    _normalize_in_predicate(context, expr, slot,
450
6
                                                            _slot_id_to_predicates[slot->id()],
451
6
                                                            value_range, &pdt),
452
6
                                    status);
453
6
                            break;
454
7
                        case TExprNodeType::BINARY_PRED:
455
7
                            RETURN_IF_PUSH_DOWN(
456
7
                                    _normalize_binary_predicate(context, expr, slot,
457
7
                                                                _slot_id_to_predicates[slot->id()],
458
7
                                                                value_range, &pdt),
459
7
                                    status);
460
7
                            break;
461
2
                        case TExprNodeType::FUNCTION_CALL:
462
2
                            if (expr->is_topn_filter()) {
463
0
                                RETURN_IF_PUSH_DOWN(
464
0
                                        _normalize_topn_filter(context, expr, slot,
465
0
                                                               _slot_id_to_predicates[slot->id()],
466
0
                                                               &pdt),
467
0
                                        status);
468
2
                            } else {
469
2
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
2
                                                            context, expr, slot,
471
2
                                                            _slot_id_to_predicates[slot->id()],
472
2
                                                            value_range, &pdt),
473
2
                                                    status);
474
2
                            }
475
2
                            break;
476
2
                        case TExprNodeType::BLOOM_PRED:
477
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
0
                                                        context, root, slot,
479
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
0
                                                status);
481
0
                            break;
482
0
                        default:
483
0
                            break;
484
15
                        }
485
15
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
15
                    if (state()->enable_function_pushdown()) {
488
0
                        RETURN_IF_PUSH_DOWN(
489
0
                                _normalize_function_filters(
490
0
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
0
                                status);
492
0
                    }
493
15
                },
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE7EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE8EEEEEDaSC_
_ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE9EEEEEDaSC_
Line
Count
Source
432
63
                [&](auto& value_range) {
433
63
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
63
                    {
435
63
                        Defer attach_defer = [&]() {
436
63
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
63
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
63
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
63
                                        rf_expr->filter_id(),
440
63
                                        rf_expr->predicate_filtered_rows_counter(),
441
63
                                        rf_expr->predicate_input_rows_counter(),
442
63
                                        rf_expr->predicate_always_true_rows_counter(),
443
63
                                        context->get_runtime_filter_selectivity());
444
63
                            }
445
63
                        };
446
63
                        switch (expr->node_type()) {
447
2
                        case TExprNodeType::IN_PRED:
448
2
                            RETURN_IF_PUSH_DOWN(
449
2
                                    _normalize_in_predicate(context, expr, slot,
450
2
                                                            _slot_id_to_predicates[slot->id()],
451
2
                                                            value_range, &pdt),
452
2
                                    status);
453
2
                            break;
454
60
                        case TExprNodeType::BINARY_PRED:
455
60
                            RETURN_IF_PUSH_DOWN(
456
60
                                    _normalize_binary_predicate(context, expr, slot,
457
60
                                                                _slot_id_to_predicates[slot->id()],
458
60
                                                                value_range, &pdt),
459
60
                                    status);
460
60
                            break;
461
1
                        case TExprNodeType::FUNCTION_CALL:
462
1
                            if (expr->is_topn_filter()) {
463
0
                                RETURN_IF_PUSH_DOWN(
464
0
                                        _normalize_topn_filter(context, expr, slot,
465
0
                                                               _slot_id_to_predicates[slot->id()],
466
0
                                                               &pdt),
467
0
                                        status);
468
1
                            } else {
469
1
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
1
                                                            context, expr, slot,
471
1
                                                            _slot_id_to_predicates[slot->id()],
472
1
                                                            value_range, &pdt),
473
1
                                                    status);
474
1
                            }
475
1
                            break;
476
1
                        case TExprNodeType::BLOOM_PRED:
477
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
0
                                                        context, root, slot,
479
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
0
                                                status);
481
0
                            break;
482
0
                        default:
483
0
                            break;
484
63
                        }
485
63
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
63
                    if (state()->enable_function_pushdown()) {
488
0
                        RETURN_IF_PUSH_DOWN(
489
0
                                _normalize_function_filters(
490
0
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
0
                                status);
492
0
                    }
493
63
                },
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE36EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE37EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE15EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE10EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE23EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE11EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE25EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE12EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE26EEEEEDaSC_
_ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE43EEEEEDaSC_
Line
Count
Source
432
1
                [&](auto& value_range) {
433
1
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
1
                    {
435
1
                        Defer attach_defer = [&]() {
436
1
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
1
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
1
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
1
                                        rf_expr->filter_id(),
440
1
                                        rf_expr->predicate_filtered_rows_counter(),
441
1
                                        rf_expr->predicate_input_rows_counter(),
442
1
                                        rf_expr->predicate_always_true_rows_counter(),
443
1
                                        context->get_runtime_filter_selectivity());
444
1
                            }
445
1
                        };
446
1
                        switch (expr->node_type()) {
447
1
                        case TExprNodeType::IN_PRED:
448
1
                            RETURN_IF_PUSH_DOWN(
449
1
                                    _normalize_in_predicate(context, expr, slot,
450
1
                                                            _slot_id_to_predicates[slot->id()],
451
1
                                                            value_range, &pdt),
452
1
                                    status);
453
1
                            break;
454
0
                        case TExprNodeType::BINARY_PRED:
455
0
                            RETURN_IF_PUSH_DOWN(
456
0
                                    _normalize_binary_predicate(context, expr, slot,
457
0
                                                                _slot_id_to_predicates[slot->id()],
458
0
                                                                value_range, &pdt),
459
0
                                    status);
460
0
                            break;
461
0
                        case TExprNodeType::FUNCTION_CALL:
462
0
                            if (expr->is_topn_filter()) {
463
0
                                RETURN_IF_PUSH_DOWN(
464
0
                                        _normalize_topn_filter(context, expr, slot,
465
0
                                                               _slot_id_to_predicates[slot->id()],
466
0
                                                               &pdt),
467
0
                                        status);
468
0
                            } else {
469
0
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
0
                                                            context, expr, slot,
471
0
                                                            _slot_id_to_predicates[slot->id()],
472
0
                                                            value_range, &pdt),
473
0
                                                    status);
474
0
                            }
475
0
                            break;
476
0
                        case TExprNodeType::BLOOM_PRED:
477
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
0
                                                        context, root, slot,
479
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
0
                                                status);
481
0
                            break;
482
0
                        default:
483
0
                            break;
484
1
                        }
485
1
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
1
                    if (state()->enable_function_pushdown()) {
488
0
                        RETURN_IF_PUSH_DOWN(
489
0
                                _normalize_function_filters(
490
0
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
0
                                status);
492
0
                    }
493
1
                },
_ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE42EEEEEDaSC_
Line
Count
Source
432
21
                [&](auto& value_range) {
433
21
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
21
                    {
435
21
                        Defer attach_defer = [&]() {
436
21
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
21
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
21
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
21
                                        rf_expr->filter_id(),
440
21
                                        rf_expr->predicate_filtered_rows_counter(),
441
21
                                        rf_expr->predicate_input_rows_counter(),
442
21
                                        rf_expr->predicate_always_true_rows_counter(),
443
21
                                        context->get_runtime_filter_selectivity());
444
21
                            }
445
21
                        };
446
21
                        switch (expr->node_type()) {
447
2
                        case TExprNodeType::IN_PRED:
448
2
                            RETURN_IF_PUSH_DOWN(
449
2
                                    _normalize_in_predicate(context, expr, slot,
450
2
                                                            _slot_id_to_predicates[slot->id()],
451
2
                                                            value_range, &pdt),
452
2
                                    status);
453
2
                            break;
454
18
                        case TExprNodeType::BINARY_PRED:
455
18
                            RETURN_IF_PUSH_DOWN(
456
18
                                    _normalize_binary_predicate(context, expr, slot,
457
18
                                                                _slot_id_to_predicates[slot->id()],
458
18
                                                                value_range, &pdt),
459
18
                                    status);
460
18
                            break;
461
1
                        case TExprNodeType::FUNCTION_CALL:
462
1
                            if (expr->is_topn_filter()) {
463
0
                                RETURN_IF_PUSH_DOWN(
464
0
                                        _normalize_topn_filter(context, expr, slot,
465
0
                                                               _slot_id_to_predicates[slot->id()],
466
0
                                                               &pdt),
467
0
                                        status);
468
1
                            } else {
469
1
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
1
                                                            context, expr, slot,
471
1
                                                            _slot_id_to_predicates[slot->id()],
472
1
                                                            value_range, &pdt),
473
1
                                                    status);
474
1
                            }
475
1
                            break;
476
1
                        case TExprNodeType::BLOOM_PRED:
477
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
0
                                                        context, root, slot,
479
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
0
                                                status);
481
0
                            break;
482
0
                        default:
483
0
                            break;
484
21
                        }
485
21
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
21
                    if (state()->enable_function_pushdown()) {
488
0
                        RETURN_IF_PUSH_DOWN(
489
0
                                _normalize_function_filters(
490
0
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
0
                                status);
492
0
                    }
493
21
                },
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE44EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE20EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE2EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE28EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE29EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE30EEEEEDaSC_
Unexecuted instantiation: _ZZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_ENKUlRT_E_clINS_16ColumnValueRangeILNS_13PrimitiveTypeE35EEEEEDaSC_
494
100
                *range);
495
100
        RETURN_IF_ERROR(status);
496
100
    }
497
103
    if (pdt == PushDownType::ACCEPTABLE && slotref != nullptr &&
498
103
        slotref->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
499
        // remaining it in the expr tree, in order to filter by function if the pushdown
500
        // predicate is not applied
501
0
        output_expr = expr_root; // remaining in conjunct tree
502
0
        return Status::OK();
503
0
    }
504
505
103
    if (pdt == PushDownType::ACCEPTABLE && _is_key_column(slot->col_name())) {
506
97
        output_expr = nullptr;
507
97
        return Status::OK();
508
97
    } else {
509
        // for PARTIAL_ACCEPTABLE and UNACCEPTABLE, do not remove expr from the tree
510
6
        output_expr = root;
511
6
        return Status::OK();
512
6
    }
513
0
    output_expr = root;
514
0
    return Status::OK();
515
103
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE20_normalize_predicateEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEERS7_
Line
Count
Source
405
105
                                                     VExprSPtr& output_expr) {
406
105
    auto expr_root = root->is_rf_wrapper() ? root->get_impl() : root;
407
105
    PushDownType pdt = PushDownType::UNACCEPTABLE;
408
105
    if (dynamic_cast<VirtualSlotRef*>(expr_root.get())) {
409
        // If the expr has virtual slot ref, we need to keep it in the tree.
410
0
        output_expr = expr_root;
411
0
        return Status::OK();
412
0
    }
413
414
105
    SlotDescriptor* slot = nullptr;
415
105
    ColumnValueRangeType* range = nullptr;
416
105
    RETURN_IF_ERROR(_eval_const_conjuncts(context, &pdt));
417
105
    if (pdt == PushDownType::ACCEPTABLE) {
418
2
        output_expr = nullptr;
419
2
        return Status::OK();
420
2
    }
421
103
    std::shared_ptr<VSlotRef> slotref;
422
189
    for (const auto& child : expr_root->children()) {
423
189
        if (VExpr::expr_without_cast(child)->node_type() != TExprNodeType::SLOT_REF) {
424
            // not a slot ref(column)
425
87
            continue;
426
87
        }
427
102
        slotref = std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(child));
428
102
    }
429
103
    if (_is_predicate_acting_on_slot(expr_root->children(), &slot, &range)) {
430
100
        Status status = Status::OK();
431
100
        std::visit(
432
100
                [&](auto& value_range) {
433
100
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
434
100
                    {
435
100
                        Defer attach_defer = [&]() {
436
100
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
437
100
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
438
100
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
439
100
                                        rf_expr->filter_id(),
440
100
                                        rf_expr->predicate_filtered_rows_counter(),
441
100
                                        rf_expr->predicate_input_rows_counter(),
442
100
                                        rf_expr->predicate_always_true_rows_counter(),
443
100
                                        context->get_runtime_filter_selectivity());
444
100
                            }
445
100
                        };
446
100
                        switch (expr->node_type()) {
447
100
                        case TExprNodeType::IN_PRED:
448
100
                            RETURN_IF_PUSH_DOWN(
449
100
                                    _normalize_in_predicate(context, expr, slot,
450
100
                                                            _slot_id_to_predicates[slot->id()],
451
100
                                                            value_range, &pdt),
452
100
                                    status);
453
100
                            break;
454
100
                        case TExprNodeType::BINARY_PRED:
455
100
                            RETURN_IF_PUSH_DOWN(
456
100
                                    _normalize_binary_predicate(context, expr, slot,
457
100
                                                                _slot_id_to_predicates[slot->id()],
458
100
                                                                value_range, &pdt),
459
100
                                    status);
460
100
                            break;
461
100
                        case TExprNodeType::FUNCTION_CALL:
462
100
                            if (expr->is_topn_filter()) {
463
100
                                RETURN_IF_PUSH_DOWN(
464
100
                                        _normalize_topn_filter(context, expr, slot,
465
100
                                                               _slot_id_to_predicates[slot->id()],
466
100
                                                               &pdt),
467
100
                                        status);
468
100
                            } else {
469
100
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
470
100
                                                            context, expr, slot,
471
100
                                                            _slot_id_to_predicates[slot->id()],
472
100
                                                            value_range, &pdt),
473
100
                                                    status);
474
100
                            }
475
100
                            break;
476
100
                        case TExprNodeType::BLOOM_PRED:
477
100
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
478
100
                                                        context, root, slot,
479
100
                                                        _slot_id_to_predicates[slot->id()], &pdt),
480
100
                                                status);
481
100
                            break;
482
100
                        default:
483
100
                            break;
484
100
                        }
485
100
                    }
486
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
487
100
                    if (state()->enable_function_pushdown()) {
488
100
                        RETURN_IF_PUSH_DOWN(
489
100
                                _normalize_function_filters(
490
100
                                        context, slot, _slot_id_to_predicates[slot->id()], &pdt),
491
100
                                status);
492
100
                    }
493
100
                },
494
100
                *range);
495
100
        RETURN_IF_ERROR(status);
496
100
    }
497
103
    if (pdt == PushDownType::ACCEPTABLE && slotref != nullptr &&
498
103
        slotref->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
499
        // remaining it in the expr tree, in order to filter by function if the pushdown
500
        // predicate is not applied
501
0
        output_expr = expr_root; // remaining in conjunct tree
502
0
        return Status::OK();
503
0
    }
504
505
103
    if (pdt == PushDownType::ACCEPTABLE && _is_key_column(slot->col_name())) {
506
97
        output_expr = nullptr;
507
97
        return Status::OK();
508
97
    } else {
509
        // for PARTIAL_ACCEPTABLE and UNACCEPTABLE, do not remove expr from the tree
510
6
        output_expr = root;
511
6
        return Status::OK();
512
6
    }
513
0
    output_expr = root;
514
0
    return Status::OK();
515
103
}
516
517
Status ScanLocalStateBase::_normalize_bloom_filter(
518
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
519
0
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, PushDownType* pdt) {
520
0
    std::shared_ptr<ColumnPredicate> pred = nullptr;
521
0
    Defer defer = [&]() {
522
0
        if (pred) {
523
0
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
524
0
            predicates.emplace_back(pred);
525
0
        } else {
526
            // If exception occurs during processing, do not push down
527
0
            *pdt = PushDownType::UNACCEPTABLE;
528
0
        }
529
0
    };
530
0
    DCHECK(TExprNodeType::BLOOM_PRED == root->node_type());
531
0
    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
532
0
    DCHECK(expr->get_num_children() == 1);
533
0
    DCHECK(root->is_rf_wrapper());
534
0
    *pdt = _should_push_down_bloom_filter();
535
0
    if (*pdt != PushDownType::UNACCEPTABLE) {
536
0
        pred = create_bloom_filter_predicate(
537
0
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
538
0
                slot->col_name(),
539
0
                slot->type()->get_primitive_type() == TYPE_VARIANT ? expr->get_child(0)->data_type()
540
0
                                                                   : slot->type(),
541
0
                expr->get_bloom_filter_func());
542
0
    }
543
0
    return Status::OK();
544
0
}
545
546
Status ScanLocalStateBase::_normalize_topn_filter(
547
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
548
0
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, PushDownType* pdt) {
549
0
    std::shared_ptr<ColumnPredicate> pred = nullptr;
550
0
    Defer defer = [&]() {
551
0
        if (pred) {
552
0
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
553
0
            predicates.emplace_back(pred);
554
0
        } else {
555
            // If exception occurs during processing, do not push down
556
0
            *pdt = PushDownType::UNACCEPTABLE;
557
0
        }
558
0
    };
559
0
    DCHECK(root->is_topn_filter());
560
0
    *pdt = _should_push_down_topn_filter();
561
0
    if (*pdt != PushDownType::UNACCEPTABLE) {
562
0
        auto& tmp = _state->get_query_ctx()->get_runtime_predicate(
563
0
                assert_cast<VTopNPred*>(root.get())->source_node_id());
564
0
        if (_push_down_topn(tmp)) {
565
0
            pred = tmp.get_predicate(_parent->node_id());
566
0
        }
567
0
    }
568
0
    return Status::OK();
569
0
}
570
571
Status ScanLocalStateBase::_normalize_function_filters(
572
        VExprContext* expr_ctx, SlotDescriptor* slot,
573
8
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, PushDownType* pdt) {
574
8
    auto expr = expr_ctx->root()->is_rf_wrapper() ? expr_ctx->root()->get_impl() : expr_ctx->root();
575
8
    bool opposite = false;
576
8
    VExpr* fn_expr = expr.get();
577
8
    if (TExprNodeType::COMPOUND_PRED == expr->node_type() &&
578
8
        expr->fn().name.function_name == "not") {
579
4
        fn_expr = fn_expr->children()[0].get();
580
4
        opposite = true;
581
4
    }
582
583
8
    if (fn_expr->is_like_expr()) {
584
8
        doris::FunctionContext* fn_ctx = nullptr;
585
8
        StringRef val;
586
8
        PushDownType temp_pdt;
587
8
        RETURN_IF_ERROR(_should_push_down_function_filter(assert_cast<VectorizedFnCall*>(fn_expr),
588
8
                                                          expr_ctx, &val, &fn_ctx, temp_pdt));
589
8
        if (temp_pdt != PushDownType::UNACCEPTABLE) {
590
0
            const auto column_id = cast_set<uint32_t>(
591
0
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()));
592
0
            predicates.emplace_back(LikeColumnPredicate::create_shared(
593
0
                    opposite, column_id, slot->col_name(), fn_ctx, val));
594
0
            *pdt = temp_pdt;
595
0
        }
596
8
    }
597
8
    return Status::OK();
598
8
}
599
600
// only one level cast expr could push down for variant type
601
// check if expr is cast and it's children is slot
602
0
static bool is_valid_push_down_cast(const VExprSPtrs& children) {
603
0
    auto slot_expr = VExpr::expr_without_cast(children[0]);
604
0
    return slot_expr->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT &&
605
0
           children[0]->node_type() == TExprNodeType::CAST_EXPR &&
606
0
           children[0]->children().at(0)->is_slot_ref();
607
0
}
608
609
template <typename Derived>
610
bool ScanLocalState<Derived>::_is_predicate_acting_on_slot(const VExprSPtrs& children,
611
                                                           SlotDescriptor** slot_desc,
612
103
                                                           ColumnValueRangeType** range) {
613
    // children[0] must be slot ref or cast(slot(variant) as type)
614
103
    if (children.empty() || (children[0]->node_type() != TExprNodeType::SLOT_REF &&
615
102
                             !is_valid_push_down_cast(children))) {
616
        // not a slot ref(column)
617
1
        return false;
618
1
    }
619
102
    std::shared_ptr<VSlotRef> slot_ref =
620
102
            std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(children[0]));
621
102
    *slot_desc =
622
102
            _parent->cast<typename Derived::Parent>()._slot_id_to_slot_desc[slot_ref->slot_id()];
623
102
    auto entry = _slot_id_to_predicates.find(slot_ref->slot_id());
624
102
    if (_slot_id_to_predicates.end() == entry) {
625
2
        return false;
626
2
    }
627
100
    auto sid_to_range = _slot_id_to_value_range.find(slot_ref->slot_id());
628
100
    if (_slot_id_to_value_range.end() == sid_to_range) {
629
0
        return false;
630
0
    }
631
100
    if (!can_push_down_column_predicate(*slot_desc)) {
632
0
        return false;
633
0
    }
634
100
    *range = &(sid_to_range->second);
635
100
    return true;
636
100
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE28_is_predicate_acting_on_slotERKSt6vectorISt10shared_ptrINS_5VExprEESaIS6_EEPPNS_14SlotDescriptorEPPSt7variantIJNS_16ColumnValueRangeILNS_13PrimitiveTypeE3EEENSF_ILSG_4EEENSF_ILSG_5EEENSF_ILSG_6EEENSF_ILSG_7EEENSF_ILSG_8EEENSF_ILSG_9EEENSF_ILSG_36EEENSF_ILSG_37EEENSF_ILSG_15EEENSF_ILSG_10EEENSF_ILSG_23EEENSF_ILSG_11EEENSF_ILSG_25EEENSF_ILSG_12EEENSF_ILSG_26EEENSF_ILSG_43EEENSF_ILSG_42EEENSF_ILSG_44EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Line
Count
Source
612
103
                                                           ColumnValueRangeType** range) {
613
    // children[0] must be slot ref or cast(slot(variant) as type)
614
103
    if (children.empty() || (children[0]->node_type() != TExprNodeType::SLOT_REF &&
615
102
                             !is_valid_push_down_cast(children))) {
616
        // not a slot ref(column)
617
1
        return false;
618
1
    }
619
102
    std::shared_ptr<VSlotRef> slot_ref =
620
102
            std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(children[0]));
621
102
    *slot_desc =
622
102
            _parent->cast<typename Derived::Parent>()._slot_id_to_slot_desc[slot_ref->slot_id()];
623
102
    auto entry = _slot_id_to_predicates.find(slot_ref->slot_id());
624
102
    if (_slot_id_to_predicates.end() == entry) {
625
2
        return false;
626
2
    }
627
100
    auto sid_to_range = _slot_id_to_value_range.find(slot_ref->slot_id());
628
100
    if (_slot_id_to_value_range.end() == sid_to_range) {
629
0
        return false;
630
0
    }
631
100
    if (!can_push_down_column_predicate(*slot_desc)) {
632
0
        return false;
633
0
    }
634
100
    *range = &(sid_to_range->second);
635
100
    return true;
636
100
}
637
638
template <typename Derived>
639
0
std::string ScanLocalState<Derived>::debug_string(int indentation_level) const {
640
0
    fmt::memory_buffer debug_string_buffer;
641
0
    fmt::format_to(debug_string_buffer, "{}, _eos = {} , _opened = {}",
642
0
                   PipelineXLocalState<>::debug_string(indentation_level), _eos.load(),
643
0
                   _opened.load());
644
0
    if (auto ctx = _scanner_ctx.load()) {
645
0
        fmt::format_to(debug_string_buffer, "");
646
0
        fmt::format_to(debug_string_buffer, ", Scanner Context: {}", ctx->debug_string());
647
0
    } else {
648
0
        fmt::format_to(debug_string_buffer, "");
649
0
        fmt::format_to(debug_string_buffer, ", Scanner Context: NULL");
650
0
    }
651
652
0
    return fmt::to_string(debug_string_buffer);
653
0
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE12debug_stringB5cxx11Ei
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE12debug_stringB5cxx11Ei
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE12debug_stringB5cxx11Ei
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE12debug_stringB5cxx11Ei
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE12debug_stringB5cxx11Ei
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE12debug_stringB5cxx11Ei
654
655
113
Status ScanLocalStateBase::_eval_const_conjuncts(VExprContext* expr_ctx, PushDownType* pdt) {
656
113
    auto vexpr =
657
113
            expr_ctx->root()->is_rf_wrapper() ? expr_ctx->root()->get_impl() : expr_ctx->root();
658
    // Used to handle constant expressions, such as '1 = 1' _eval_const_conjuncts does not handle cases like 'colA = 1'
659
113
    const char* constant_val = nullptr;
660
113
    if (vexpr->is_constant()) {
661
10
        std::shared_ptr<ConstantExprResult> const_col_wrapper;
662
10
        RETURN_IF_ERROR(vexpr->get_const_col(expr_ctx, &const_col_wrapper));
663
10
        constant_val = const_col_wrapper->column().get_data_at(0).data;
664
        // A constant NULL, like constant false, rejects every row in a WHERE predicate.
665
10
        if (constant_val == nullptr || !*reinterpret_cast<const bool*>(constant_val)) {
666
8
            *pdt = PushDownType::ACCEPTABLE;
667
8
            _eos = true;
668
8
            _scan_dependency->set_ready();
669
8
        }
670
10
    }
671
113
    return Status::OK();
672
113
}
673
674
template <PrimitiveType T>
675
Status ScanLocalStateBase::_normalize_in_predicate(
676
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
677
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
678
11
        PushDownType* pdt) {
679
11
    std::shared_ptr<ColumnPredicate> pred = nullptr;
680
11
    Defer defer = [&]() {
681
11
        if (pred) {
682
9
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
9
            predicates.emplace_back(pred);
684
9
        } else {
685
            // If exception occurs during processing, do not push down
686
2
            *pdt = PushDownType::UNACCEPTABLE;
687
2
        }
688
11
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
680
6
    Defer defer = [&]() {
681
6
        if (pred) {
682
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
4
            predicates.emplace_back(pred);
684
4
        } else {
685
            // If exception occurs during processing, do not push down
686
2
            *pdt = PushDownType::UNACCEPTABLE;
687
2
        }
688
6
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
680
2
    Defer defer = [&]() {
681
2
        if (pred) {
682
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
2
            predicates.emplace_back(pred);
684
2
        } else {
685
            // If exception occurs during processing, do not push down
686
0
            *pdt = PushDownType::UNACCEPTABLE;
687
0
        }
688
2
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
680
1
    Defer defer = [&]() {
681
1
        if (pred) {
682
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
1
            predicates.emplace_back(pred);
684
1
        } else {
685
            // If exception occurs during processing, do not push down
686
0
            *pdt = PushDownType::UNACCEPTABLE;
687
0
        }
688
1
    };
_ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
680
2
    Defer defer = [&]() {
681
2
        if (pred) {
682
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
2
            predicates.emplace_back(pred);
684
2
        } else {
685
            // If exception occurs during processing, do not push down
686
0
            *pdt = PushDownType::UNACCEPTABLE;
687
0
        }
688
2
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
689
690
11
    if (slot->get_virtual_column_expr() != nullptr) {
691
        // virtual column, do not push down
692
0
        return Status::OK();
693
0
    }
694
695
11
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
696
11
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
697
11
    *pdt = _should_push_down_in_predicate();
698
11
    if (*pdt == PushDownType::UNACCEPTABLE) {
699
0
        return Status::OK();
700
0
    }
701
11
    HybridSetBase::IteratorBase* iter = nullptr;
702
11
    auto hybrid_set = root->get_set_func();
703
704
11
    auto is_in = false;
705
11
    if (hybrid_set != nullptr) {
706
        // runtime filter produce VDirectInPredicate
707
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
708
0
            iter = hybrid_set->begin();
709
0
        }
710
0
        is_in = true;
711
11
    } else {
712
        // normal in predicate
713
11
        auto* tmp = assert_cast<VInPredicate*>(root.get());
714
715
        // begin to push InPredicate value into ColumnValueRange
716
11
        auto* state = reinterpret_cast<InState*>(
717
11
                expr_ctx->fn_context(tmp->fn_context_index())
718
11
                        ->get_function_state(FunctionContext::FunctionStateScope::FRAGMENT_LOCAL));
719
720
        // xx in (col, xx, xx) should not be push down
721
11
        if (!state->use_set) {
722
1
            return Status::OK();
723
1
        }
724
10
        is_in = !tmp->is_not_in();
725
726
10
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
727
1
            _eos = true;
728
1
            _scan_dependency->set_ready();
729
1
            return Status::OK();
730
1
        }
731
9
        hybrid_set = state->hybrid_set;
732
9
        iter = state->hybrid_set->begin();
733
9
    }
734
735
9
    if (iter) {
736
9
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
737
9
                slot->is_nullable(), range.precision(), range.scale());
738
9
        auto& temp_range = is_in ? empty_range : range;
739
9
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
740
9
                        : (range.is_fixed_value_range()
741
4
                                   ? ColumnValueRange<T>::remove_fixed_value_range
742
4
                                   : ColumnValueRange<T>::empty_function);
743
52
        while (iter->has_next()) {
744
            // column in (nullptr) is always false so continue to
745
            // dispose next item
746
43
            DCHECK(iter->get_value() != nullptr);
747
43
            const auto* value = iter->get_value();
748
43
            if constexpr (is_string_type(T)) {
749
0
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
750
0
                RETURN_IF_ERROR(_change_value_range(
751
0
                        is_in, temp_range,
752
0
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
753
0
                        is_in ? "in" : "not_in"));
754
43
            } else {
755
43
                RETURN_IF_ERROR(_change_value_range(
756
43
                        is_in, temp_range,
757
43
                        Field::create_field<T>(
758
43
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
759
43
                                        value)),
760
43
                        fn, is_in ? "in" : "not_in"));
761
43
            }
762
43
            iter->next();
763
43
        }
764
9
        if (is_in) {
765
5
            range.intersection(temp_range);
766
5
        }
767
9
    }
768
9
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
769
5
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
770
5
                           slot->col_name(),
771
5
                           slot->type()->get_primitive_type() == TYPE_VARIANT
772
5
                                   ? root->get_child(0)->data_type()
773
5
                                   : slot->type(),
774
5
                           hybrid_set, false)
775
9
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
776
4
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
777
4
                           slot->col_name(),
778
4
                           slot->type()->get_primitive_type() == TYPE_VARIANT
779
4
                                   ? root->get_child(0)->data_type()
780
4
                                   : slot->type(),
781
4
                           hybrid_set, false);
782
9
    return Status::OK();
783
11
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
678
6
        PushDownType* pdt) {
679
6
    std::shared_ptr<ColumnPredicate> pred = nullptr;
680
6
    Defer defer = [&]() {
681
6
        if (pred) {
682
6
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
6
            predicates.emplace_back(pred);
684
6
        } else {
685
            // If exception occurs during processing, do not push down
686
6
            *pdt = PushDownType::UNACCEPTABLE;
687
6
        }
688
6
    };
689
690
6
    if (slot->get_virtual_column_expr() != nullptr) {
691
        // virtual column, do not push down
692
0
        return Status::OK();
693
0
    }
694
695
6
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
696
6
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
697
6
    *pdt = _should_push_down_in_predicate();
698
6
    if (*pdt == PushDownType::UNACCEPTABLE) {
699
0
        return Status::OK();
700
0
    }
701
6
    HybridSetBase::IteratorBase* iter = nullptr;
702
6
    auto hybrid_set = root->get_set_func();
703
704
6
    auto is_in = false;
705
6
    if (hybrid_set != nullptr) {
706
        // runtime filter produce VDirectInPredicate
707
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
708
0
            iter = hybrid_set->begin();
709
0
        }
710
0
        is_in = true;
711
6
    } else {
712
        // normal in predicate
713
6
        auto* tmp = assert_cast<VInPredicate*>(root.get());
714
715
        // begin to push InPredicate value into ColumnValueRange
716
6
        auto* state = reinterpret_cast<InState*>(
717
6
                expr_ctx->fn_context(tmp->fn_context_index())
718
6
                        ->get_function_state(FunctionContext::FunctionStateScope::FRAGMENT_LOCAL));
719
720
        // xx in (col, xx, xx) should not be push down
721
6
        if (!state->use_set) {
722
1
            return Status::OK();
723
1
        }
724
5
        is_in = !tmp->is_not_in();
725
726
5
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
727
1
            _eos = true;
728
1
            _scan_dependency->set_ready();
729
1
            return Status::OK();
730
1
        }
731
4
        hybrid_set = state->hybrid_set;
732
4
        iter = state->hybrid_set->begin();
733
4
    }
734
735
4
    if (iter) {
736
4
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
737
4
                slot->is_nullable(), range.precision(), range.scale());
738
4
        auto& temp_range = is_in ? empty_range : range;
739
4
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
740
4
                        : (range.is_fixed_value_range()
741
2
                                   ? ColumnValueRange<T>::remove_fixed_value_range
742
2
                                   : ColumnValueRange<T>::empty_function);
743
16
        while (iter->has_next()) {
744
            // column in (nullptr) is always false so continue to
745
            // dispose next item
746
12
            DCHECK(iter->get_value() != nullptr);
747
12
            const auto* value = iter->get_value();
748
            if constexpr (is_string_type(T)) {
749
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
750
                RETURN_IF_ERROR(_change_value_range(
751
                        is_in, temp_range,
752
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
753
                        is_in ? "in" : "not_in"));
754
12
            } else {
755
12
                RETURN_IF_ERROR(_change_value_range(
756
12
                        is_in, temp_range,
757
12
                        Field::create_field<T>(
758
12
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
759
12
                                        value)),
760
12
                        fn, is_in ? "in" : "not_in"));
761
12
            }
762
12
            iter->next();
763
12
        }
764
4
        if (is_in) {
765
2
            range.intersection(temp_range);
766
2
        }
767
4
    }
768
4
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
769
2
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
770
2
                           slot->col_name(),
771
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
772
2
                                   ? root->get_child(0)->data_type()
773
2
                                   : slot->type(),
774
2
                           hybrid_set, false)
775
4
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
776
2
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
777
2
                           slot->col_name(),
778
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
779
2
                                   ? root->get_child(0)->data_type()
780
2
                                   : slot->type(),
781
2
                           hybrid_set, false);
782
4
    return Status::OK();
783
6
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
678
2
        PushDownType* pdt) {
679
2
    std::shared_ptr<ColumnPredicate> pred = nullptr;
680
2
    Defer defer = [&]() {
681
2
        if (pred) {
682
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
2
            predicates.emplace_back(pred);
684
2
        } else {
685
            // If exception occurs during processing, do not push down
686
2
            *pdt = PushDownType::UNACCEPTABLE;
687
2
        }
688
2
    };
689
690
2
    if (slot->get_virtual_column_expr() != nullptr) {
691
        // virtual column, do not push down
692
0
        return Status::OK();
693
0
    }
694
695
2
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
696
2
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
697
2
    *pdt = _should_push_down_in_predicate();
698
2
    if (*pdt == PushDownType::UNACCEPTABLE) {
699
0
        return Status::OK();
700
0
    }
701
2
    HybridSetBase::IteratorBase* iter = nullptr;
702
2
    auto hybrid_set = root->get_set_func();
703
704
2
    auto is_in = false;
705
2
    if (hybrid_set != nullptr) {
706
        // runtime filter produce VDirectInPredicate
707
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
708
0
            iter = hybrid_set->begin();
709
0
        }
710
0
        is_in = true;
711
2
    } else {
712
        // normal in predicate
713
2
        auto* tmp = assert_cast<VInPredicate*>(root.get());
714
715
        // begin to push InPredicate value into ColumnValueRange
716
2
        auto* state = reinterpret_cast<InState*>(
717
2
                expr_ctx->fn_context(tmp->fn_context_index())
718
2
                        ->get_function_state(FunctionContext::FunctionStateScope::FRAGMENT_LOCAL));
719
720
        // xx in (col, xx, xx) should not be push down
721
2
        if (!state->use_set) {
722
0
            return Status::OK();
723
0
        }
724
2
        is_in = !tmp->is_not_in();
725
726
2
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
727
0
            _eos = true;
728
0
            _scan_dependency->set_ready();
729
0
            return Status::OK();
730
0
        }
731
2
        hybrid_set = state->hybrid_set;
732
2
        iter = state->hybrid_set->begin();
733
2
    }
734
735
2
    if (iter) {
736
2
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
737
2
                slot->is_nullable(), range.precision(), range.scale());
738
2
        auto& temp_range = is_in ? empty_range : range;
739
2
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
740
2
                        : (range.is_fixed_value_range()
741
1
                                   ? ColumnValueRange<T>::remove_fixed_value_range
742
1
                                   : ColumnValueRange<T>::empty_function);
743
22
        while (iter->has_next()) {
744
            // column in (nullptr) is always false so continue to
745
            // dispose next item
746
20
            DCHECK(iter->get_value() != nullptr);
747
20
            const auto* value = iter->get_value();
748
            if constexpr (is_string_type(T)) {
749
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
750
                RETURN_IF_ERROR(_change_value_range(
751
                        is_in, temp_range,
752
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
753
                        is_in ? "in" : "not_in"));
754
20
            } else {
755
20
                RETURN_IF_ERROR(_change_value_range(
756
20
                        is_in, temp_range,
757
20
                        Field::create_field<T>(
758
20
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
759
20
                                        value)),
760
20
                        fn, is_in ? "in" : "not_in"));
761
20
            }
762
20
            iter->next();
763
20
        }
764
2
        if (is_in) {
765
1
            range.intersection(temp_range);
766
1
        }
767
2
    }
768
2
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
769
1
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
770
1
                           slot->col_name(),
771
1
                           slot->type()->get_primitive_type() == TYPE_VARIANT
772
1
                                   ? root->get_child(0)->data_type()
773
1
                                   : slot->type(),
774
1
                           hybrid_set, false)
775
2
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
776
1
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
777
1
                           slot->col_name(),
778
1
                           slot->type()->get_primitive_type() == TYPE_VARIANT
779
1
                                   ? root->get_child(0)->data_type()
780
1
                                   : slot->type(),
781
1
                           hybrid_set, false);
782
2
    return Status::OK();
783
2
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
678
1
        PushDownType* pdt) {
679
1
    std::shared_ptr<ColumnPredicate> pred = nullptr;
680
1
    Defer defer = [&]() {
681
1
        if (pred) {
682
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
1
            predicates.emplace_back(pred);
684
1
        } else {
685
            // If exception occurs during processing, do not push down
686
1
            *pdt = PushDownType::UNACCEPTABLE;
687
1
        }
688
1
    };
689
690
1
    if (slot->get_virtual_column_expr() != nullptr) {
691
        // virtual column, do not push down
692
0
        return Status::OK();
693
0
    }
694
695
1
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
696
1
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
697
1
    *pdt = _should_push_down_in_predicate();
698
1
    if (*pdt == PushDownType::UNACCEPTABLE) {
699
0
        return Status::OK();
700
0
    }
701
1
    HybridSetBase::IteratorBase* iter = nullptr;
702
1
    auto hybrid_set = root->get_set_func();
703
704
1
    auto is_in = false;
705
1
    if (hybrid_set != nullptr) {
706
        // runtime filter produce VDirectInPredicate
707
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
708
0
            iter = hybrid_set->begin();
709
0
        }
710
0
        is_in = true;
711
1
    } else {
712
        // normal in predicate
713
1
        auto* tmp = assert_cast<VInPredicate*>(root.get());
714
715
        // begin to push InPredicate value into ColumnValueRange
716
1
        auto* state = reinterpret_cast<InState*>(
717
1
                expr_ctx->fn_context(tmp->fn_context_index())
718
1
                        ->get_function_state(FunctionContext::FunctionStateScope::FRAGMENT_LOCAL));
719
720
        // xx in (col, xx, xx) should not be push down
721
1
        if (!state->use_set) {
722
0
            return Status::OK();
723
0
        }
724
1
        is_in = !tmp->is_not_in();
725
726
1
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
727
0
            _eos = true;
728
0
            _scan_dependency->set_ready();
729
0
            return Status::OK();
730
0
        }
731
1
        hybrid_set = state->hybrid_set;
732
1
        iter = state->hybrid_set->begin();
733
1
    }
734
735
1
    if (iter) {
736
1
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
737
1
                slot->is_nullable(), range.precision(), range.scale());
738
1
        auto& temp_range = is_in ? empty_range : range;
739
1
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
740
1
                        : (range.is_fixed_value_range()
741
0
                                   ? ColumnValueRange<T>::remove_fixed_value_range
742
0
                                   : ColumnValueRange<T>::empty_function);
743
6
        while (iter->has_next()) {
744
            // column in (nullptr) is always false so continue to
745
            // dispose next item
746
5
            DCHECK(iter->get_value() != nullptr);
747
5
            const auto* value = iter->get_value();
748
            if constexpr (is_string_type(T)) {
749
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
750
                RETURN_IF_ERROR(_change_value_range(
751
                        is_in, temp_range,
752
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
753
                        is_in ? "in" : "not_in"));
754
5
            } else {
755
5
                RETURN_IF_ERROR(_change_value_range(
756
5
                        is_in, temp_range,
757
5
                        Field::create_field<T>(
758
5
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
759
5
                                        value)),
760
5
                        fn, is_in ? "in" : "not_in"));
761
5
            }
762
5
            iter->next();
763
5
        }
764
1
        if (is_in) {
765
1
            range.intersection(temp_range);
766
1
        }
767
1
    }
768
1
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
769
1
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
770
1
                           slot->col_name(),
771
1
                           slot->type()->get_primitive_type() == TYPE_VARIANT
772
1
                                   ? root->get_child(0)->data_type()
773
1
                                   : slot->type(),
774
1
                           hybrid_set, false)
775
1
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
776
0
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
777
0
                           slot->col_name(),
778
0
                           slot->type()->get_primitive_type() == TYPE_VARIANT
779
0
                                   ? root->get_child(0)->data_type()
780
0
                                   : slot->type(),
781
0
                           hybrid_set, false);
782
1
    return Status::OK();
783
1
}
_ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
678
2
        PushDownType* pdt) {
679
2
    std::shared_ptr<ColumnPredicate> pred = nullptr;
680
2
    Defer defer = [&]() {
681
2
        if (pred) {
682
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
683
2
            predicates.emplace_back(pred);
684
2
        } else {
685
            // If exception occurs during processing, do not push down
686
2
            *pdt = PushDownType::UNACCEPTABLE;
687
2
        }
688
2
    };
689
690
2
    if (slot->get_virtual_column_expr() != nullptr) {
691
        // virtual column, do not push down
692
0
        return Status::OK();
693
0
    }
694
695
2
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
696
2
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
697
2
    *pdt = _should_push_down_in_predicate();
698
2
    if (*pdt == PushDownType::UNACCEPTABLE) {
699
0
        return Status::OK();
700
0
    }
701
2
    HybridSetBase::IteratorBase* iter = nullptr;
702
2
    auto hybrid_set = root->get_set_func();
703
704
2
    auto is_in = false;
705
2
    if (hybrid_set != nullptr) {
706
        // runtime filter produce VDirectInPredicate
707
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
708
0
            iter = hybrid_set->begin();
709
0
        }
710
0
        is_in = true;
711
2
    } else {
712
        // normal in predicate
713
2
        auto* tmp = assert_cast<VInPredicate*>(root.get());
714
715
        // begin to push InPredicate value into ColumnValueRange
716
2
        auto* state = reinterpret_cast<InState*>(
717
2
                expr_ctx->fn_context(tmp->fn_context_index())
718
2
                        ->get_function_state(FunctionContext::FunctionStateScope::FRAGMENT_LOCAL));
719
720
        // xx in (col, xx, xx) should not be push down
721
2
        if (!state->use_set) {
722
0
            return Status::OK();
723
0
        }
724
2
        is_in = !tmp->is_not_in();
725
726
2
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
727
0
            _eos = true;
728
0
            _scan_dependency->set_ready();
729
0
            return Status::OK();
730
0
        }
731
2
        hybrid_set = state->hybrid_set;
732
2
        iter = state->hybrid_set->begin();
733
2
    }
734
735
2
    if (iter) {
736
2
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
737
2
                slot->is_nullable(), range.precision(), range.scale());
738
2
        auto& temp_range = is_in ? empty_range : range;
739
2
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
740
2
                        : (range.is_fixed_value_range()
741
1
                                   ? ColumnValueRange<T>::remove_fixed_value_range
742
1
                                   : ColumnValueRange<T>::empty_function);
743
8
        while (iter->has_next()) {
744
            // column in (nullptr) is always false so continue to
745
            // dispose next item
746
6
            DCHECK(iter->get_value() != nullptr);
747
6
            const auto* value = iter->get_value();
748
            if constexpr (is_string_type(T)) {
749
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
750
                RETURN_IF_ERROR(_change_value_range(
751
                        is_in, temp_range,
752
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
753
                        is_in ? "in" : "not_in"));
754
6
            } else {
755
6
                RETURN_IF_ERROR(_change_value_range(
756
6
                        is_in, temp_range,
757
6
                        Field::create_field<T>(
758
6
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
759
6
                                        value)),
760
6
                        fn, is_in ? "in" : "not_in"));
761
6
            }
762
6
            iter->next();
763
6
        }
764
2
        if (is_in) {
765
1
            range.intersection(temp_range);
766
1
        }
767
2
    }
768
2
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
769
1
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
770
1
                           slot->col_name(),
771
1
                           slot->type()->get_primitive_type() == TYPE_VARIANT
772
1
                                   ? root->get_child(0)->data_type()
773
1
                                   : slot->type(),
774
1
                           hybrid_set, false)
775
2
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
776
1
                           _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
777
1
                           slot->col_name(),
778
1
                           slot->type()->get_primitive_type() == TYPE_VARIANT
779
1
                                   ? root->get_child(0)->data_type()
780
1
                                   : slot->type(),
781
1
                           hybrid_set, false);
782
2
    return Status::OK();
783
2
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase23_normalize_in_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
784
785
template <PrimitiveType T>
786
Status ScanLocalStateBase::_normalize_binary_predicate(
787
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
788
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
789
85
        PushDownType* pdt) {
790
85
    std::shared_ptr<ColumnPredicate> pred = nullptr;
791
85
    Defer defer = [&]() {
792
85
        if (pred) {
793
84
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
84
            predicates.emplace_back(pred);
795
84
        } else {
796
            // If exception occurs during processing, do not push down
797
1
            *pdt = PushDownType::UNACCEPTABLE;
798
1
        }
799
85
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
791
7
    Defer defer = [&]() {
792
7
        if (pred) {
793
6
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
6
            predicates.emplace_back(pred);
795
6
        } else {
796
            // If exception occurs during processing, do not push down
797
1
            *pdt = PushDownType::UNACCEPTABLE;
798
1
        }
799
7
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
791
60
    Defer defer = [&]() {
792
60
        if (pred) {
793
60
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
60
            predicates.emplace_back(pred);
795
60
        } else {
796
            // If exception occurs during processing, do not push down
797
0
            *pdt = PushDownType::UNACCEPTABLE;
798
0
        }
799
60
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
791
18
    Defer defer = [&]() {
792
18
        if (pred) {
793
18
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
18
            predicates.emplace_back(pred);
795
18
        } else {
796
            // If exception occurs during processing, do not push down
797
0
            *pdt = PushDownType::UNACCEPTABLE;
798
0
        }
799
18
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
800
801
85
    if (slot->get_virtual_column_expr() != nullptr) {
802
        // virtual column, do not push down
803
0
        return Status::OK();
804
0
    }
805
806
85
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
807
85
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
808
85
    DCHECK(root->get_num_children() == 2);
809
85
    Field value;
810
85
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
811
85
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
812
85
    if (*pdt == PushDownType::UNACCEPTABLE) {
813
0
        return Status::OK();
814
0
    }
815
85
    const std::string& function_name =
816
85
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
817
85
    auto op = to_olap_filter_type(function_name);
818
85
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
819
85
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
820
85
            slot->is_nullable(), range.precision(), range.scale());
821
85
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
822
85
    if (value.get_type() != TYPE_NULL) {
823
84
        switch (op) {
824
16
        case SQLFilterOp::FILTER_EQ:
825
16
            pred = create_comparison_predicate<PredicateType::EQ>(
826
16
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
827
16
                    slot->col_name(),
828
16
                    slot->type()->get_primitive_type() == TYPE_VARIANT
829
16
                            ? root->get_child(0)->data_type()
830
16
                            : slot->type(),
831
16
                    value, false);
832
16
            break;
833
14
        case SQLFilterOp::FILTER_NE:
834
14
            pred = create_comparison_predicate<PredicateType::NE>(
835
14
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
836
14
                    slot->col_name(),
837
14
                    slot->type()->get_primitive_type() == TYPE_VARIANT
838
14
                            ? root->get_child(0)->data_type()
839
14
                            : slot->type(),
840
14
                    value, false);
841
14
            break;
842
13
        case SQLFilterOp::FILTER_LESS:
843
13
            pred = create_comparison_predicate<PredicateType::LT>(
844
13
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
845
13
                    slot->col_name(),
846
13
                    slot->type()->get_primitive_type() == TYPE_VARIANT
847
13
                            ? root->get_child(0)->data_type()
848
13
                            : slot->type(),
849
13
                    value, false);
850
13
            break;
851
13
        case SQLFilterOp::FILTER_LARGER:
852
13
            pred = create_comparison_predicate<PredicateType::GT>(
853
13
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
854
13
                    slot->col_name(),
855
13
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
13
                            ? root->get_child(0)->data_type()
857
13
                            : slot->type(),
858
13
                    value, false);
859
13
            break;
860
14
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
861
14
            pred = create_comparison_predicate<PredicateType::LE>(
862
14
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
863
14
                    slot->col_name(),
864
14
                    slot->type()->get_primitive_type() == TYPE_VARIANT
865
14
                            ? root->get_child(0)->data_type()
866
14
                            : slot->type(),
867
14
                    value, false);
868
14
            break;
869
14
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
870
14
            pred = create_comparison_predicate<PredicateType::GE>(
871
14
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
872
14
                    slot->col_name(),
873
14
                    slot->type()->get_primitive_type() == TYPE_VARIANT
874
14
                            ? root->get_child(0)->data_type()
875
14
                            : slot->type(),
876
14
                    value, false);
877
14
            break;
878
0
        default:
879
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
880
84
        }
881
882
84
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
883
84
                  : op == SQLFilterOp::FILTER_NE
884
68
                          ? (range.is_fixed_value_range()
885
14
                                     ? ColumnValueRange<T>::remove_fixed_value_range
886
14
                                     : ColumnValueRange<T>::empty_function)
887
68
                          : ColumnValueRange<T>::add_value_range;
888
84
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
889
84
        if (op == SQLFilterOp::FILTER_EQ) {
890
16
            range.intersection(temp_range);
891
16
        }
892
84
    } else {
893
1
        *pdt = PushDownType::UNACCEPTABLE;
894
1
        _eos = true;
895
1
        _scan_dependency->set_ready();
896
1
    }
897
898
85
    return Status::OK();
899
85
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
789
7
        PushDownType* pdt) {
790
7
    std::shared_ptr<ColumnPredicate> pred = nullptr;
791
7
    Defer defer = [&]() {
792
7
        if (pred) {
793
7
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
7
            predicates.emplace_back(pred);
795
7
        } else {
796
            // If exception occurs during processing, do not push down
797
7
            *pdt = PushDownType::UNACCEPTABLE;
798
7
        }
799
7
    };
800
801
7
    if (slot->get_virtual_column_expr() != nullptr) {
802
        // virtual column, do not push down
803
0
        return Status::OK();
804
0
    }
805
806
7
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
807
7
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
808
7
    DCHECK(root->get_num_children() == 2);
809
7
    Field value;
810
7
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
811
7
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
812
7
    if (*pdt == PushDownType::UNACCEPTABLE) {
813
0
        return Status::OK();
814
0
    }
815
7
    const std::string& function_name =
816
7
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
817
7
    auto op = to_olap_filter_type(function_name);
818
7
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
819
7
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
820
7
            slot->is_nullable(), range.precision(), range.scale());
821
7
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
822
7
    if (value.get_type() != TYPE_NULL) {
823
6
        switch (op) {
824
3
        case SQLFilterOp::FILTER_EQ:
825
3
            pred = create_comparison_predicate<PredicateType::EQ>(
826
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
827
3
                    slot->col_name(),
828
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
829
3
                            ? root->get_child(0)->data_type()
830
3
                            : slot->type(),
831
3
                    value, false);
832
3
            break;
833
1
        case SQLFilterOp::FILTER_NE:
834
1
            pred = create_comparison_predicate<PredicateType::NE>(
835
1
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
836
1
                    slot->col_name(),
837
1
                    slot->type()->get_primitive_type() == TYPE_VARIANT
838
1
                            ? root->get_child(0)->data_type()
839
1
                            : slot->type(),
840
1
                    value, false);
841
1
            break;
842
0
        case SQLFilterOp::FILTER_LESS:
843
0
            pred = create_comparison_predicate<PredicateType::LT>(
844
0
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
845
0
                    slot->col_name(),
846
0
                    slot->type()->get_primitive_type() == TYPE_VARIANT
847
0
                            ? root->get_child(0)->data_type()
848
0
                            : slot->type(),
849
0
                    value, false);
850
0
            break;
851
0
        case SQLFilterOp::FILTER_LARGER:
852
0
            pred = create_comparison_predicate<PredicateType::GT>(
853
0
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
854
0
                    slot->col_name(),
855
0
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
0
                            ? root->get_child(0)->data_type()
857
0
                            : slot->type(),
858
0
                    value, false);
859
0
            break;
860
1
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
861
1
            pred = create_comparison_predicate<PredicateType::LE>(
862
1
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
863
1
                    slot->col_name(),
864
1
                    slot->type()->get_primitive_type() == TYPE_VARIANT
865
1
                            ? root->get_child(0)->data_type()
866
1
                            : slot->type(),
867
1
                    value, false);
868
1
            break;
869
1
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
870
1
            pred = create_comparison_predicate<PredicateType::GE>(
871
1
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
872
1
                    slot->col_name(),
873
1
                    slot->type()->get_primitive_type() == TYPE_VARIANT
874
1
                            ? root->get_child(0)->data_type()
875
1
                            : slot->type(),
876
1
                    value, false);
877
1
            break;
878
0
        default:
879
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
880
6
        }
881
882
6
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
883
6
                  : op == SQLFilterOp::FILTER_NE
884
3
                          ? (range.is_fixed_value_range()
885
1
                                     ? ColumnValueRange<T>::remove_fixed_value_range
886
1
                                     : ColumnValueRange<T>::empty_function)
887
3
                          : ColumnValueRange<T>::add_value_range;
888
6
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
889
6
        if (op == SQLFilterOp::FILTER_EQ) {
890
3
            range.intersection(temp_range);
891
3
        }
892
6
    } else {
893
1
        *pdt = PushDownType::UNACCEPTABLE;
894
1
        _eos = true;
895
1
        _scan_dependency->set_ready();
896
1
    }
897
898
7
    return Status::OK();
899
7
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
789
60
        PushDownType* pdt) {
790
60
    std::shared_ptr<ColumnPredicate> pred = nullptr;
791
60
    Defer defer = [&]() {
792
60
        if (pred) {
793
60
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
60
            predicates.emplace_back(pred);
795
60
        } else {
796
            // If exception occurs during processing, do not push down
797
60
            *pdt = PushDownType::UNACCEPTABLE;
798
60
        }
799
60
    };
800
801
60
    if (slot->get_virtual_column_expr() != nullptr) {
802
        // virtual column, do not push down
803
0
        return Status::OK();
804
0
    }
805
806
60
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
807
60
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
808
60
    DCHECK(root->get_num_children() == 2);
809
60
    Field value;
810
60
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
811
60
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
812
60
    if (*pdt == PushDownType::UNACCEPTABLE) {
813
0
        return Status::OK();
814
0
    }
815
60
    const std::string& function_name =
816
60
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
817
60
    auto op = to_olap_filter_type(function_name);
818
60
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
819
60
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
820
60
            slot->is_nullable(), range.precision(), range.scale());
821
60
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
822
60
    if (value.get_type() != TYPE_NULL) {
823
60
        switch (op) {
824
10
        case SQLFilterOp::FILTER_EQ:
825
10
            pred = create_comparison_predicate<PredicateType::EQ>(
826
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
827
10
                    slot->col_name(),
828
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
829
10
                            ? root->get_child(0)->data_type()
830
10
                            : slot->type(),
831
10
                    value, false);
832
10
            break;
833
10
        case SQLFilterOp::FILTER_NE:
834
10
            pred = create_comparison_predicate<PredicateType::NE>(
835
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
836
10
                    slot->col_name(),
837
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
838
10
                            ? root->get_child(0)->data_type()
839
10
                            : slot->type(),
840
10
                    value, false);
841
10
            break;
842
10
        case SQLFilterOp::FILTER_LESS:
843
10
            pred = create_comparison_predicate<PredicateType::LT>(
844
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
845
10
                    slot->col_name(),
846
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
847
10
                            ? root->get_child(0)->data_type()
848
10
                            : slot->type(),
849
10
                    value, false);
850
10
            break;
851
10
        case SQLFilterOp::FILTER_LARGER:
852
10
            pred = create_comparison_predicate<PredicateType::GT>(
853
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
854
10
                    slot->col_name(),
855
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
10
                            ? root->get_child(0)->data_type()
857
10
                            : slot->type(),
858
10
                    value, false);
859
10
            break;
860
10
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
861
10
            pred = create_comparison_predicate<PredicateType::LE>(
862
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
863
10
                    slot->col_name(),
864
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
865
10
                            ? root->get_child(0)->data_type()
866
10
                            : slot->type(),
867
10
                    value, false);
868
10
            break;
869
10
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
870
10
            pred = create_comparison_predicate<PredicateType::GE>(
871
10
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
872
10
                    slot->col_name(),
873
10
                    slot->type()->get_primitive_type() == TYPE_VARIANT
874
10
                            ? root->get_child(0)->data_type()
875
10
                            : slot->type(),
876
10
                    value, false);
877
10
            break;
878
0
        default:
879
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
880
60
        }
881
882
60
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
883
60
                  : op == SQLFilterOp::FILTER_NE
884
50
                          ? (range.is_fixed_value_range()
885
10
                                     ? ColumnValueRange<T>::remove_fixed_value_range
886
10
                                     : ColumnValueRange<T>::empty_function)
887
50
                          : ColumnValueRange<T>::add_value_range;
888
60
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
889
60
        if (op == SQLFilterOp::FILTER_EQ) {
890
10
            range.intersection(temp_range);
891
10
        }
892
60
    } else {
893
0
        *pdt = PushDownType::UNACCEPTABLE;
894
0
        _eos = true;
895
0
        _scan_dependency->set_ready();
896
0
    }
897
898
60
    return Status::OK();
899
60
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
789
18
        PushDownType* pdt) {
790
18
    std::shared_ptr<ColumnPredicate> pred = nullptr;
791
18
    Defer defer = [&]() {
792
18
        if (pred) {
793
18
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
794
18
            predicates.emplace_back(pred);
795
18
        } else {
796
            // If exception occurs during processing, do not push down
797
18
            *pdt = PushDownType::UNACCEPTABLE;
798
18
        }
799
18
    };
800
801
18
    if (slot->get_virtual_column_expr() != nullptr) {
802
        // virtual column, do not push down
803
0
        return Status::OK();
804
0
    }
805
806
18
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
807
18
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
808
18
    DCHECK(root->get_num_children() == 2);
809
18
    Field value;
810
18
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
811
18
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
812
18
    if (*pdt == PushDownType::UNACCEPTABLE) {
813
0
        return Status::OK();
814
0
    }
815
18
    const std::string& function_name =
816
18
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
817
18
    auto op = to_olap_filter_type(function_name);
818
18
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
819
18
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
820
18
            slot->is_nullable(), range.precision(), range.scale());
821
18
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
822
18
    if (value.get_type() != TYPE_NULL) {
823
18
        switch (op) {
824
3
        case SQLFilterOp::FILTER_EQ:
825
3
            pred = create_comparison_predicate<PredicateType::EQ>(
826
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
827
3
                    slot->col_name(),
828
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
829
3
                            ? root->get_child(0)->data_type()
830
3
                            : slot->type(),
831
3
                    value, false);
832
3
            break;
833
3
        case SQLFilterOp::FILTER_NE:
834
3
            pred = create_comparison_predicate<PredicateType::NE>(
835
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
836
3
                    slot->col_name(),
837
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
838
3
                            ? root->get_child(0)->data_type()
839
3
                            : slot->type(),
840
3
                    value, false);
841
3
            break;
842
3
        case SQLFilterOp::FILTER_LESS:
843
3
            pred = create_comparison_predicate<PredicateType::LT>(
844
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
845
3
                    slot->col_name(),
846
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
847
3
                            ? root->get_child(0)->data_type()
848
3
                            : slot->type(),
849
3
                    value, false);
850
3
            break;
851
3
        case SQLFilterOp::FILTER_LARGER:
852
3
            pred = create_comparison_predicate<PredicateType::GT>(
853
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
854
3
                    slot->col_name(),
855
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
3
                            ? root->get_child(0)->data_type()
857
3
                            : slot->type(),
858
3
                    value, false);
859
3
            break;
860
3
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
861
3
            pred = create_comparison_predicate<PredicateType::LE>(
862
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
863
3
                    slot->col_name(),
864
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
865
3
                            ? root->get_child(0)->data_type()
866
3
                            : slot->type(),
867
3
                    value, false);
868
3
            break;
869
3
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
870
3
            pred = create_comparison_predicate<PredicateType::GE>(
871
3
                    _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
872
3
                    slot->col_name(),
873
3
                    slot->type()->get_primitive_type() == TYPE_VARIANT
874
3
                            ? root->get_child(0)->data_type()
875
3
                            : slot->type(),
876
3
                    value, false);
877
3
            break;
878
0
        default:
879
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
880
18
        }
881
882
18
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
883
18
                  : op == SQLFilterOp::FILTER_NE
884
15
                          ? (range.is_fixed_value_range()
885
3
                                     ? ColumnValueRange<T>::remove_fixed_value_range
886
3
                                     : ColumnValueRange<T>::empty_function)
887
15
                          : ColumnValueRange<T>::add_value_range;
888
18
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
889
18
        if (op == SQLFilterOp::FILTER_EQ) {
890
3
            range.intersection(temp_range);
891
3
        }
892
18
    } else {
893
0
        *pdt = PushDownType::UNACCEPTABLE;
894
0
        _eos = true;
895
0
        _scan_dependency->set_ready();
896
0
    }
897
898
18
    return Status::OK();
899
18
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
900
901
template <PrimitiveType PrimitiveType, typename ChangeFixedValueRangeFunc>
902
Status ScanLocalStateBase::_change_value_range(bool is_equal_op,
903
                                               ColumnValueRange<PrimitiveType>& temp_range,
904
                                               const Field& value,
905
                                               const ChangeFixedValueRangeFunc& func,
906
127
                                               const std::string& fn_name) {
907
127
    if constexpr (PrimitiveType == TYPE_DATE) {
908
0
        auto tmp_value = value.template get<TYPE_DATE>();
909
0
        if (is_equal_op) {
910
0
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
911
0
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
912
0
            }
913
0
        } else {
914
0
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
915
0
                if (fn_name == "lt" || fn_name == "ge") {
916
0
                    ++tmp_value;
917
0
                }
918
0
            }
919
0
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
920
0
        }
921
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
922
                         (PrimitiveType == TYPE_TIMESTAMP_NS) || (PrimitiveType == TYPE_TINYINT) ||
923
                         (PrimitiveType == TYPE_SMALLINT) || (PrimitiveType == TYPE_INT) ||
924
                         (PrimitiveType == TYPE_BIGINT) || (PrimitiveType == TYPE_LARGEINT) ||
925
                         (PrimitiveType == TYPE_FLOAT) || (PrimitiveType == TYPE_DOUBLE) ||
926
                         (PrimitiveType == TYPE_IPV4) || (PrimitiveType == TYPE_IPV6) ||
927
                         (PrimitiveType == TYPE_DECIMAL32) || (PrimitiveType == TYPE_DECIMAL64) ||
928
                         (PrimitiveType == TYPE_DECIMAL128I) ||
929
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
930
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
931
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType) ||
932
127
                         (PrimitiveType == TYPE_UUID)) {
933
127
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
934
    } else {
935
        static_assert(always_false_v<PrimitiveType>);
936
    }
937
127
    return Status::OK();
938
127
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE3EPFvRNS_16ColumnValueRangeILS2_3EEENS_11SQLFilterOpERKaEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE4EPFvRNS_16ColumnValueRangeILS2_4EEENS_11SQLFilterOpERKsEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE5EPFvRNS_16ColumnValueRangeILS2_5EEENS_11SQLFilterOpERKiEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
_ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE6EPFvRNS_16ColumnValueRangeILS2_6EEENS_11SQLFilterOpERKlEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Line
Count
Source
906
18
                                               const std::string& fn_name) {
907
    if constexpr (PrimitiveType == TYPE_DATE) {
908
        auto tmp_value = value.template get<TYPE_DATE>();
909
        if (is_equal_op) {
910
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
911
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
912
            }
913
        } else {
914
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
915
                if (fn_name == "lt" || fn_name == "ge") {
916
                    ++tmp_value;
917
                }
918
            }
919
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
920
        }
921
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
922
                         (PrimitiveType == TYPE_TIMESTAMP_NS) || (PrimitiveType == TYPE_TINYINT) ||
923
                         (PrimitiveType == TYPE_SMALLINT) || (PrimitiveType == TYPE_INT) ||
924
                         (PrimitiveType == TYPE_BIGINT) || (PrimitiveType == TYPE_LARGEINT) ||
925
                         (PrimitiveType == TYPE_FLOAT) || (PrimitiveType == TYPE_DOUBLE) ||
926
                         (PrimitiveType == TYPE_IPV4) || (PrimitiveType == TYPE_IPV6) ||
927
                         (PrimitiveType == TYPE_DECIMAL32) || (PrimitiveType == TYPE_DECIMAL64) ||
928
                         (PrimitiveType == TYPE_DECIMAL128I) ||
929
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
930
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
931
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType) ||
932
18
                         (PrimitiveType == TYPE_UUID)) {
933
18
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
934
    } else {
935
        static_assert(always_false_v<PrimitiveType>);
936
    }
937
18
    return Status::OK();
938
18
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE7EPFvRNS_16ColumnValueRangeILS2_7EEENS_11SQLFilterOpERKnEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE8EPFvRNS_16ColumnValueRangeILS2_8EEENS_11SQLFilterOpERKfEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
_ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE9EPFvRNS_16ColumnValueRangeILS2_9EEENS_11SQLFilterOpERKdEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Line
Count
Source
906
80
                                               const std::string& fn_name) {
907
    if constexpr (PrimitiveType == TYPE_DATE) {
908
        auto tmp_value = value.template get<TYPE_DATE>();
909
        if (is_equal_op) {
910
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
911
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
912
            }
913
        } else {
914
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
915
                if (fn_name == "lt" || fn_name == "ge") {
916
                    ++tmp_value;
917
                }
918
            }
919
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
920
        }
921
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
922
                         (PrimitiveType == TYPE_TIMESTAMP_NS) || (PrimitiveType == TYPE_TINYINT) ||
923
                         (PrimitiveType == TYPE_SMALLINT) || (PrimitiveType == TYPE_INT) ||
924
                         (PrimitiveType == TYPE_BIGINT) || (PrimitiveType == TYPE_LARGEINT) ||
925
                         (PrimitiveType == TYPE_FLOAT) || (PrimitiveType == TYPE_DOUBLE) ||
926
                         (PrimitiveType == TYPE_IPV4) || (PrimitiveType == TYPE_IPV6) ||
927
                         (PrimitiveType == TYPE_DECIMAL32) || (PrimitiveType == TYPE_DECIMAL64) ||
928
                         (PrimitiveType == TYPE_DECIMAL128I) ||
929
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
930
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
931
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType) ||
932
80
                         (PrimitiveType == TYPE_UUID)) {
933
80
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
934
    } else {
935
        static_assert(always_false_v<PrimitiveType>);
936
    }
937
80
    return Status::OK();
938
80
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE36EPFvRNS_16ColumnValueRangeILS2_36EEENS_11SQLFilterOpERKjEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE37EPFvRNS_16ColumnValueRangeILS2_37EEENS_11SQLFilterOpERKoEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE15EPFvRNS_16ColumnValueRangeILS2_15EEENS_11SQLFilterOpERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_SE_
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE10EPFvRNS_16ColumnValueRangeILS2_10EEENS_11SQLFilterOpERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_SE_
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE23EPFvRNS_16ColumnValueRangeILS2_23EEENS_11SQLFilterOpERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_SE_
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE11EPFvRNS_16ColumnValueRangeILS2_11EEENS_11SQLFilterOpERKNS_16VecDateTimeValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE25EPFvRNS_16ColumnValueRangeILS2_25EEENS_11SQLFilterOpERKNS_11DateV2ValueINS_15DateV2ValueTypeEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE12EPFvRNS_16ColumnValueRangeILS2_12EEENS_11SQLFilterOpERKNS_16VecDateTimeValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE26EPFvRNS_16ColumnValueRangeILS2_26EEENS_11SQLFilterOpERKNS_11DateV2ValueINS_19DateTimeV2ValueTypeEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
_ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE43EPFvRNS_16ColumnValueRangeILS2_43EEENS_11SQLFilterOpERKNS_16TimeStampNsValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Line
Count
Source
906
5
                                               const std::string& fn_name) {
907
    if constexpr (PrimitiveType == TYPE_DATE) {
908
        auto tmp_value = value.template get<TYPE_DATE>();
909
        if (is_equal_op) {
910
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
911
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
912
            }
913
        } else {
914
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
915
                if (fn_name == "lt" || fn_name == "ge") {
916
                    ++tmp_value;
917
                }
918
            }
919
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
920
        }
921
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
922
                         (PrimitiveType == TYPE_TIMESTAMP_NS) || (PrimitiveType == TYPE_TINYINT) ||
923
                         (PrimitiveType == TYPE_SMALLINT) || (PrimitiveType == TYPE_INT) ||
924
                         (PrimitiveType == TYPE_BIGINT) || (PrimitiveType == TYPE_LARGEINT) ||
925
                         (PrimitiveType == TYPE_FLOAT) || (PrimitiveType == TYPE_DOUBLE) ||
926
                         (PrimitiveType == TYPE_IPV4) || (PrimitiveType == TYPE_IPV6) ||
927
                         (PrimitiveType == TYPE_DECIMAL32) || (PrimitiveType == TYPE_DECIMAL64) ||
928
                         (PrimitiveType == TYPE_DECIMAL128I) ||
929
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
930
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
931
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType) ||
932
5
                         (PrimitiveType == TYPE_UUID)) {
933
5
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
934
    } else {
935
        static_assert(always_false_v<PrimitiveType>);
936
    }
937
5
    return Status::OK();
938
5
}
_ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE42EPFvRNS_16ColumnValueRangeILS2_42EEENS_11SQLFilterOpERKNS_16TimestampTzValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Line
Count
Source
906
24
                                               const std::string& fn_name) {
907
    if constexpr (PrimitiveType == TYPE_DATE) {
908
        auto tmp_value = value.template get<TYPE_DATE>();
909
        if (is_equal_op) {
910
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
911
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
912
            }
913
        } else {
914
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
915
                if (fn_name == "lt" || fn_name == "ge") {
916
                    ++tmp_value;
917
                }
918
            }
919
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
920
        }
921
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
922
                         (PrimitiveType == TYPE_TIMESTAMP_NS) || (PrimitiveType == TYPE_TINYINT) ||
923
                         (PrimitiveType == TYPE_SMALLINT) || (PrimitiveType == TYPE_INT) ||
924
                         (PrimitiveType == TYPE_BIGINT) || (PrimitiveType == TYPE_LARGEINT) ||
925
                         (PrimitiveType == TYPE_FLOAT) || (PrimitiveType == TYPE_DOUBLE) ||
926
                         (PrimitiveType == TYPE_IPV4) || (PrimitiveType == TYPE_IPV6) ||
927
                         (PrimitiveType == TYPE_DECIMAL32) || (PrimitiveType == TYPE_DECIMAL64) ||
928
                         (PrimitiveType == TYPE_DECIMAL128I) ||
929
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
930
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
931
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType) ||
932
24
                         (PrimitiveType == TYPE_UUID)) {
933
24
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
934
    } else {
935
        static_assert(always_false_v<PrimitiveType>);
936
    }
937
24
    return Status::OK();
938
24
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE44EPFvRNS_16ColumnValueRangeILS2_44EEENS_11SQLFilterOpERKoEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE20EPFvRNS_16ColumnValueRangeILS2_20EEENS_11SQLFilterOpERKNS_14DecimalV2ValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE2EPFvRNS_16ColumnValueRangeILS2_2EEENS_11SQLFilterOpERKhEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE28EPFvRNS_16ColumnValueRangeILS2_28EEENS_11SQLFilterOpERKNS_7DecimalIiEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE29EPFvRNS_16ColumnValueRangeILS2_29EEENS_11SQLFilterOpERKNS_7DecimalIlEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE30EPFvRNS_16ColumnValueRangeILS2_30EEENS_11SQLFilterOpERKNS_12Decimal128V3EEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase19_change_value_rangeILNS_13PrimitiveTypeE35EPFvRNS_16ColumnValueRangeILS2_35EEENS_11SQLFilterOpERKNS_7DecimalIN4wide7integerILm256EiEEEEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
939
940
template <PrimitiveType T>
941
Status ScanLocalStateBase::_normalize_is_null_predicate(
942
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
943
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
944
4
        PushDownType* pdt) {
945
4
    std::shared_ptr<ColumnPredicate> pred = nullptr;
946
4
    Defer defer = [&]() {
947
4
        if (pred) {
948
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
4
            predicates.emplace_back(pred);
950
4
        } else {
951
            // If exception occurs during processing, do not push down
952
0
            *pdt = PushDownType::UNACCEPTABLE;
953
0
        }
954
4
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
946
2
    Defer defer = [&]() {
947
2
        if (pred) {
948
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
2
            predicates.emplace_back(pred);
950
2
        } else {
951
            // If exception occurs during processing, do not push down
952
0
            *pdt = PushDownType::UNACCEPTABLE;
953
0
        }
954
2
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
946
1
    Defer defer = [&]() {
947
1
        if (pred) {
948
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
1
            predicates.emplace_back(pred);
950
1
        } else {
951
            // If exception occurs during processing, do not push down
952
0
            *pdt = PushDownType::UNACCEPTABLE;
953
0
        }
954
1
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
_ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
946
1
    Defer defer = [&]() {
947
1
        if (pred) {
948
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
1
            predicates.emplace_back(pred);
950
1
        } else {
951
            // If exception occurs during processing, do not push down
952
0
            *pdt = PushDownType::UNACCEPTABLE;
953
0
        }
954
1
    };
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Unexecuted instantiation: _ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
955
4
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
956
4
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
957
4
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
958
4
        *pdt = _should_push_down_is_null_predicate(fn_call);
959
4
    } else {
960
0
        *pdt = PushDownType::UNACCEPTABLE;
961
0
    }
962
963
4
    if (*pdt == PushDownType::UNACCEPTABLE) {
964
0
        return Status::OK();
965
0
    }
966
967
4
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
968
4
    if (fn_call->fn().name.function_name == "is_null_pred") {
969
1
        pred = NullPredicate::create_shared(
970
1
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
971
1
                slot->col_name(), true, T);
972
1
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
973
1
                slot->is_nullable(), range.precision(), range.scale());
974
1
        temp_range.set_contain_null(true);
975
1
        range.intersection(temp_range);
976
3
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
977
3
        pred = NullPredicate::create_shared(
978
3
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
979
3
                slot->col_name(), false, T);
980
3
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
981
3
                slot->is_nullable(), range.precision(), range.scale());
982
3
        temp_range.set_contain_null(false);
983
3
        range.intersection(temp_range);
984
3
    }
985
4
    return Status::OK();
986
4
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE3EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE4EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE5EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE6EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
944
2
        PushDownType* pdt) {
945
2
    std::shared_ptr<ColumnPredicate> pred = nullptr;
946
2
    Defer defer = [&]() {
947
2
        if (pred) {
948
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
2
            predicates.emplace_back(pred);
950
2
        } else {
951
            // If exception occurs during processing, do not push down
952
2
            *pdt = PushDownType::UNACCEPTABLE;
953
2
        }
954
2
    };
955
2
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
956
2
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
957
2
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
958
2
        *pdt = _should_push_down_is_null_predicate(fn_call);
959
2
    } else {
960
0
        *pdt = PushDownType::UNACCEPTABLE;
961
0
    }
962
963
2
    if (*pdt == PushDownType::UNACCEPTABLE) {
964
0
        return Status::OK();
965
0
    }
966
967
2
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
968
2
    if (fn_call->fn().name.function_name == "is_null_pred") {
969
1
        pred = NullPredicate::create_shared(
970
1
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
971
1
                slot->col_name(), true, T);
972
1
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
973
1
                slot->is_nullable(), range.precision(), range.scale());
974
1
        temp_range.set_contain_null(true);
975
1
        range.intersection(temp_range);
976
1
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
977
1
        pred = NullPredicate::create_shared(
978
1
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
979
1
                slot->col_name(), false, T);
980
1
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
981
1
                slot->is_nullable(), range.precision(), range.scale());
982
1
        temp_range.set_contain_null(false);
983
1
        range.intersection(temp_range);
984
1
    }
985
2
    return Status::OK();
986
2
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE7EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE8EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE9EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
944
1
        PushDownType* pdt) {
945
1
    std::shared_ptr<ColumnPredicate> pred = nullptr;
946
1
    Defer defer = [&]() {
947
1
        if (pred) {
948
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
1
            predicates.emplace_back(pred);
950
1
        } else {
951
            // If exception occurs during processing, do not push down
952
1
            *pdt = PushDownType::UNACCEPTABLE;
953
1
        }
954
1
    };
955
1
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
956
1
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
957
1
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
958
1
        *pdt = _should_push_down_is_null_predicate(fn_call);
959
1
    } else {
960
0
        *pdt = PushDownType::UNACCEPTABLE;
961
0
    }
962
963
1
    if (*pdt == PushDownType::UNACCEPTABLE) {
964
0
        return Status::OK();
965
0
    }
966
967
1
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
968
1
    if (fn_call->fn().name.function_name == "is_null_pred") {
969
0
        pred = NullPredicate::create_shared(
970
0
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
971
0
                slot->col_name(), true, T);
972
0
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
973
0
                slot->is_nullable(), range.precision(), range.scale());
974
0
        temp_range.set_contain_null(true);
975
0
        range.intersection(temp_range);
976
1
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
977
1
        pred = NullPredicate::create_shared(
978
1
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
979
1
                slot->col_name(), false, T);
980
1
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
981
1
                slot->is_nullable(), range.precision(), range.scale());
982
1
        temp_range.set_contain_null(false);
983
1
        range.intersection(temp_range);
984
1
    }
985
1
    return Status::OK();
986
1
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE36EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE37EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE15EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE10EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE23EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE11EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE25EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE12EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE26EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE43EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
_ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
944
1
        PushDownType* pdt) {
945
1
    std::shared_ptr<ColumnPredicate> pred = nullptr;
946
1
    Defer defer = [&]() {
947
1
        if (pred) {
948
1
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
949
1
            predicates.emplace_back(pred);
950
1
        } else {
951
            // If exception occurs during processing, do not push down
952
1
            *pdt = PushDownType::UNACCEPTABLE;
953
1
        }
954
1
    };
955
1
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
956
1
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
957
1
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
958
1
        *pdt = _should_push_down_is_null_predicate(fn_call);
959
1
    } else {
960
0
        *pdt = PushDownType::UNACCEPTABLE;
961
0
    }
962
963
1
    if (*pdt == PushDownType::UNACCEPTABLE) {
964
0
        return Status::OK();
965
0
    }
966
967
1
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
968
1
    if (fn_call->fn().name.function_name == "is_null_pred") {
969
0
        pred = NullPredicate::create_shared(
970
0
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
971
0
                slot->col_name(), true, T);
972
0
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
973
0
                slot->is_nullable(), range.precision(), range.scale());
974
0
        temp_range.set_contain_null(true);
975
0
        range.intersection(temp_range);
976
1
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
977
1
        pred = NullPredicate::create_shared(
978
1
                _parent->operator_row_desc_before_projection().get_column_id(slot->id()),
979
1
                slot->col_name(), false, T);
980
1
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
981
1
                slot->is_nullable(), range.precision(), range.scale());
982
1
        temp_range.set_contain_null(false);
983
1
        range.intersection(temp_range);
984
1
    }
985
1
    return Status::OK();
986
1
}
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE44EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE20EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE2EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE28EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE29EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE30EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Unexecuted instantiation: _ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE35EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
987
988
template <typename Derived>
989
2
Status ScanLocalState<Derived>::_prepare_scanners() {
990
2
    std::list<ScannerSPtr> scanners;
991
2
    RETURN_IF_ERROR(_init_scanners(&scanners));
992
    // Init scanner wrapper
993
2
    for (auto it = scanners.begin(); it != scanners.end(); ++it) {
994
0
        _scanners.emplace_back(std::make_shared<ScannerDelegate>(*it));
995
0
    }
996
2
    if (scanners.empty()) {
997
2
        _eos = true;
998
2
        _scan_dependency->set_always_ready();
999
2
    } else {
1000
0
        COUNTER_SET(_num_scanners, static_cast<int64_t>(scanners.size()));
1001
0
        RETURN_IF_ERROR(_start_scanners(_scanners));
1002
0
    }
1003
2
    return Status::OK();
1004
2
}
_ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE17_prepare_scannersEv
Line
Count
Source
989
2
Status ScanLocalState<Derived>::_prepare_scanners() {
990
2
    std::list<ScannerSPtr> scanners;
991
2
    RETURN_IF_ERROR(_init_scanners(&scanners));
992
    // Init scanner wrapper
993
2
    for (auto it = scanners.begin(); it != scanners.end(); ++it) {
994
0
        _scanners.emplace_back(std::make_shared<ScannerDelegate>(*it));
995
0
    }
996
2
    if (scanners.empty()) {
997
2
        _eos = true;
998
2
        _scan_dependency->set_always_ready();
999
2
    } else {
1000
0
        COUNTER_SET(_num_scanners, static_cast<int64_t>(scanners.size()));
1001
0
        RETURN_IF_ERROR(_start_scanners(_scanners));
1002
0
    }
1003
2
    return Status::OK();
1004
2
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17_prepare_scannersEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE17_prepare_scannersEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE17_prepare_scannersEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17_prepare_scannersEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE17_prepare_scannersEv
1005
1006
template <typename Derived>
1007
Status ScanLocalState<Derived>::_start_scanners(
1008
0
        const std::list<std::shared_ptr<ScannerDelegate>>& scanners) {
1009
0
    auto& p = _parent->cast<typename Derived::Parent>();
1010
0
    _scanner_ctx.store(ScannerContext::create_shared(
1011
0
            state(), this, p._output_tuple_desc, p.has_projection(), scanners, p.limit(),
1012
0
            _scan_dependency, &p._shared_scan_limit, p._mem_arb, p._mem_limiter, _instance_idx,
1013
0
            _state->get_query_ctx()->get_query_options().__isset.enable_adaptive_scan &&
1014
0
                    _state->get_query_ctx()->get_query_options().enable_adaptive_scan
1015
0
#ifdef BE_TEST
1016
0
            ,
1017
0
            max_scanners_concurrency(state())
1018
0
#endif
1019
0
                    ));
1020
0
    return Status::OK();
1021
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE15_start_scannersERKNSt7__cxx114listISt10shared_ptrINS_15ScannerDelegateEESaIS7_EEE
1022
1023
template <typename Derived>
1024
69
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1025
69
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1026
69
}
_ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1024
45
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1025
45
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1026
45
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17output_tuple_descEv
_ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1024
6
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1025
6
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1026
6
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE17output_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17output_tuple_descEv
_ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1024
18
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1025
18
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1026
18
}
1027
1028
template <typename Derived>
1029
9
TPushAggOp::type ScanLocalState<Derived>::get_push_down_agg_type() {
1030
9
    return _parent->cast<typename Derived::Parent>()._push_down_agg_type;
1031
9
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE22get_push_down_agg_typeEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE22get_push_down_agg_typeEv
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE22get_push_down_agg_typeEv
Line
Count
Source
1029
9
TPushAggOp::type ScanLocalState<Derived>::get_push_down_agg_type() {
1030
9
    return _parent->cast<typename Derived::Parent>()._push_down_agg_type;
1031
9
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE22get_push_down_agg_typeEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE22get_push_down_agg_typeEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE22get_push_down_agg_typeEv
1032
1033
template <typename Derived>
1034
const std::optional<std::vector<int32_t>>& ScanLocalState<Derived>::get_push_down_count_slot_ids()
1035
9
        const {
1036
9
    return _parent->cast<typename Derived::Parent>()._push_down_count_slot_ids;
1037
9
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE28get_push_down_count_slot_idsEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE28get_push_down_count_slot_idsEv
_ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE28get_push_down_count_slot_idsEv
Line
Count
Source
1035
9
        const {
1036
9
    return _parent->cast<typename Derived::Parent>()._push_down_count_slot_ids;
1037
9
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE28get_push_down_count_slot_idsEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE28get_push_down_count_slot_idsEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE28get_push_down_count_slot_idsEv
1038
1039
template <typename Derived>
1040
0
int64_t ScanLocalState<Derived>::limit_per_scanner() {
1041
0
    return _parent->cast<typename Derived::Parent>()._limit_per_scanner;
1042
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE17limit_per_scannerEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17limit_per_scannerEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE17limit_per_scannerEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE17limit_per_scannerEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17limit_per_scannerEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE17limit_per_scannerEv
1043
1044
template <typename Derived>
1045
30
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1046
30
    auto& parent = _parent->cast<typename Derived::Parent>();
1047
    // Decide from the SQL LIMIT, not from the counter. -1 means "no SQL LIMIT" — return nullptr
1048
    // so callers naturally skip all limit logic. Concurrent scanners can return more than the
1049
    // LIMIT before the operator makes its final cut, leaving this counter negative. A scanner
1050
    // initialized then must still observe that the shared LIMIT is exhausted.
1051
30
    return parent.limit() < 0 ? nullptr : &parent._shared_scan_limit;
1052
30
}
_ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE21shared_scan_limit_ptrEv
Line
Count
Source
1045
6
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1046
6
    auto& parent = _parent->cast<typename Derived::Parent>();
1047
    // Decide from the SQL LIMIT, not from the counter. -1 means "no SQL LIMIT" — return nullptr
1048
    // so callers naturally skip all limit logic. Concurrent scanners can return more than the
1049
    // LIMIT before the operator makes its final cut, leaving this counter negative. A scanner
1050
    // initialized then must still observe that the shared LIMIT is exhausted.
1051
6
    return parent.limit() < 0 ? nullptr : &parent._shared_scan_limit;
1052
6
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE21shared_scan_limit_ptrEv
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE21shared_scan_limit_ptrEv
Line
Count
Source
1045
6
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1046
6
    auto& parent = _parent->cast<typename Derived::Parent>();
1047
    // Decide from the SQL LIMIT, not from the counter. -1 means "no SQL LIMIT" — return nullptr
1048
    // so callers naturally skip all limit logic. Concurrent scanners can return more than the
1049
    // LIMIT before the operator makes its final cut, leaving this counter negative. A scanner
1050
    // initialized then must still observe that the shared LIMIT is exhausted.
1051
6
    return parent.limit() < 0 ? nullptr : &parent._shared_scan_limit;
1052
6
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE21shared_scan_limit_ptrEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE21shared_scan_limit_ptrEv
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE21shared_scan_limit_ptrEv
Line
Count
Source
1045
18
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1046
18
    auto& parent = _parent->cast<typename Derived::Parent>();
1047
    // Decide from the SQL LIMIT, not from the counter. -1 means "no SQL LIMIT" — return nullptr
1048
    // so callers naturally skip all limit logic. Concurrent scanners can return more than the
1049
    // LIMIT before the operator makes its final cut, leaving this counter negative. A scanner
1050
    // initialized then must still observe that the shared LIMIT is exhausted.
1051
18
    return parent.limit() < 0 ? nullptr : &parent._shared_scan_limit;
1052
18
}
1053
1054
template <typename Derived>
1055
10
Status ScanLocalState<Derived>::_init_profile() {
1056
    // 1. counters for scan node
1057
10
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1058
10
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1059
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1060
1061
    // 2. counters for scanners
1062
10
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1063
10
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1064
1065
10
    _newly_create_free_blocks_num =
1066
10
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1067
10
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1068
10
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1069
10
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1070
1071
    // time of scan thread to wait for worker thread of the thread pool
1072
10
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1073
1074
10
    _max_scan_concurrency =
1075
10
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1076
10
    _min_scan_concurrency =
1077
10
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1078
1079
10
    _peak_running_scanner =
1080
10
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1081
1082
10
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1083
10
    _condition_cache_filtered_rows_counter =
1084
10
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1085
1086
10
    _partitions_pruned_by_rf_counter =
1087
10
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1088
10
    _total_partitions_rf_counter =
1089
10
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1090
1091
    // Rows read from storage.
1092
    // Include the rows read from doris page cache.
1093
10
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1094
    // Size of data that read from storage.
1095
    // Does not include rows that are cached by doris page cache.
1096
10
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1097
10
    return Status::OK();
1098
10
}
_ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE13_init_profileEv
Line
Count
Source
1055
1
Status ScanLocalState<Derived>::_init_profile() {
1056
    // 1. counters for scan node
1057
1
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1058
1
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1059
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1060
1061
    // 2. counters for scanners
1062
1
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1063
1
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1064
1065
1
    _newly_create_free_blocks_num =
1066
1
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1067
1
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1068
1
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1069
1
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1070
1071
    // time of scan thread to wait for worker thread of the thread pool
1072
1
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1073
1074
1
    _max_scan_concurrency =
1075
1
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1076
1
    _min_scan_concurrency =
1077
1
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1078
1079
1
    _peak_running_scanner =
1080
1
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1081
1082
1
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1083
1
    _condition_cache_filtered_rows_counter =
1084
1
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1085
1086
1
    _partitions_pruned_by_rf_counter =
1087
1
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1088
1
    _total_partitions_rf_counter =
1089
1
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1090
1091
    // Rows read from storage.
1092
    // Include the rows read from doris page cache.
1093
1
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1094
    // Size of data that read from storage.
1095
    // Does not include rows that are cached by doris page cache.
1096
1
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1097
1
    return Status::OK();
1098
1
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE13_init_profileEv
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE13_init_profileEv
Line
Count
Source
1055
8
Status ScanLocalState<Derived>::_init_profile() {
1056
    // 1. counters for scan node
1057
8
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1058
8
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1059
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1060
1061
    // 2. counters for scanners
1062
8
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1063
8
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1064
1065
8
    _newly_create_free_blocks_num =
1066
8
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1067
8
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1068
8
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1069
8
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1070
1071
    // time of scan thread to wait for worker thread of the thread pool
1072
8
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1073
1074
8
    _max_scan_concurrency =
1075
8
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1076
8
    _min_scan_concurrency =
1077
8
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1078
1079
8
    _peak_running_scanner =
1080
8
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1081
1082
8
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1083
8
    _condition_cache_filtered_rows_counter =
1084
8
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1085
1086
8
    _partitions_pruned_by_rf_counter =
1087
8
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1088
8
    _total_partitions_rf_counter =
1089
8
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1090
1091
    // Rows read from storage.
1092
    // Include the rows read from doris page cache.
1093
8
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1094
    // Size of data that read from storage.
1095
    // Does not include rows that are cached by doris page cache.
1096
8
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1097
8
    return Status::OK();
1098
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE13_init_profileEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE13_init_profileEv
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE13_init_profileEv
Line
Count
Source
1055
1
Status ScanLocalState<Derived>::_init_profile() {
1056
    // 1. counters for scan node
1057
1
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1058
1
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1059
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1060
1061
    // 2. counters for scanners
1062
1
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1063
1
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1064
1065
1
    _newly_create_free_blocks_num =
1066
1
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1067
1
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1068
1
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1069
1
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1070
1071
    // time of scan thread to wait for worker thread of the thread pool
1072
1
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1073
1074
1
    _max_scan_concurrency =
1075
1
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1076
1
    _min_scan_concurrency =
1077
1
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1078
1079
1
    _peak_running_scanner =
1080
1
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1081
1082
1
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1083
1
    _condition_cache_filtered_rows_counter =
1084
1
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1085
1086
1
    _partitions_pruned_by_rf_counter =
1087
1
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1088
1
    _total_partitions_rf_counter =
1089
1
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1090
1091
    // Rows read from storage.
1092
    // Include the rows read from doris page cache.
1093
1
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1094
    // Size of data that read from storage.
1095
    // Does not include rows that are cached by doris page cache.
1096
1
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1097
1
    return Status::OK();
1098
1
}
1099
1100
template <typename Derived>
1101
0
Status ScanLocalState<Derived>::_get_topn_filters(RuntimeState* state) {
1102
0
    auto& p = _parent->cast<typename Derived::Parent>();
1103
0
    std::stringstream result;
1104
0
    std::copy(p._topn_filter_source_node_ids.begin(), p._topn_filter_source_node_ids.end(),
1105
0
              std::ostream_iterator<int>(result, ","));
1106
0
    custom_profile()->add_info_string("TopNFilterSourceNodeIds", result.str());
1107
1108
0
    for (auto id : get_topn_filter_source_node_ids(state, false)) {
1109
0
        const auto& pred = state->get_query_ctx()->get_runtime_predicate(id);
1110
0
        VExprSPtr topn_pred;
1111
0
        RETURN_IF_ERROR(VTopNPred::create_vtopn_pred(pred.get_texpr(p.node_id()), id, topn_pred));
1112
1113
0
        VExprContextSPtr conjunct = VExprContext::create_shared(topn_pred);
1114
0
        RETURN_IF_ERROR(conjunct->prepare(
1115
0
                state,
1116
0
                _parent->cast<typename Derived::Parent>().operator_row_desc_before_projection()));
1117
0
        RETURN_IF_ERROR(conjunct->open(state));
1118
0
        _conjuncts.emplace_back(conjunct);
1119
0
    }
1120
0
    for (auto id : get_topn_filter_source_node_ids(state, true)) {
1121
0
        const auto& pred = state->get_query_ctx()->get_runtime_predicate(id);
1122
0
        VExprSPtr topn_pred;
1123
0
        RETURN_IF_ERROR(VTopNPred::create_vtopn_pred(pred.get_texpr(p.node_id()), id, topn_pred));
1124
1125
0
        VExprContextSPtr conjunct = VExprContext::create_shared(topn_pred);
1126
0
        RETURN_IF_ERROR(conjunct->prepare(
1127
0
                state,
1128
0
                _parent->cast<typename Derived::Parent>().operator_row_desc_before_projection()));
1129
0
        RETURN_IF_ERROR(conjunct->open(state));
1130
0
        _conjuncts.emplace_back(conjunct);
1131
0
    }
1132
0
    return Status::OK();
1133
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE17_get_topn_filtersEPNS_12RuntimeStateE
1134
1135
template <typename Derived>
1136
void ScanLocalState<Derived>::_filter_and_collect_cast_type_for_variant(
1137
        const VExpr* expr,
1138
0
        std::unordered_map<std::string, std::vector<DataTypePtr>>& colname_to_cast_types) {
1139
0
    auto& p = _parent->cast<typename Derived::Parent>();
1140
0
    const auto* cast_expr = dynamic_cast<const VCastExpr*>(expr);
1141
0
    if (cast_expr != nullptr) {
1142
0
        const auto* src_slot =
1143
0
                cast_expr->get_child(0)->node_type() == TExprNodeType::SLOT_REF
1144
0
                        ? dynamic_cast<const VSlotRef*>(cast_expr->get_child(0).get())
1145
0
                        : nullptr;
1146
0
        if (src_slot == nullptr) {
1147
0
            return;
1148
0
        }
1149
0
        std::vector<SlotDescriptor*> slots = output_tuple_desc()->slots();
1150
0
        SlotDescriptor* src_slot_desc = p._slot_id_to_slot_desc[src_slot->slot_id()];
1151
0
        auto type_desc = cast_expr->get_target_type();
1152
0
        if (src_slot_desc->type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
1153
0
            colname_to_cast_types[src_slot_desc->col_name()].push_back(type_desc);
1154
0
        }
1155
0
    }
1156
0
    for (const auto& child : expr->children()) {
1157
0
        _filter_and_collect_cast_type_for_variant(child.get(), colname_to_cast_types);
1158
0
    }
1159
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE41_filter_and_collect_cast_type_for_variantEPKNS_5VExprERSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISH_EESt4hashISC_ESt8equal_toISC_ESaISt4pairIKSC_SJ_EEE
1160
1161
template <typename Derived>
1162
0
void ScanLocalState<Derived>::get_cast_types_for_variants() {
1163
0
    std::unordered_map<std::string, std::vector<DataTypePtr>> colname_to_cast_types;
1164
0
    for (auto it = _conjuncts.begin(); it != _conjuncts.end();) {
1165
0
        auto& conjunct = *it;
1166
0
        if (conjunct->root()) {
1167
0
            _filter_and_collect_cast_type_for_variant(conjunct->root().get(),
1168
0
                                                      colname_to_cast_types);
1169
0
        }
1170
0
        ++it;
1171
0
    }
1172
    // cast to one certain type for variant could utilize fully predicates performance
1173
    // when storage layer type equals to cast type
1174
0
    for (const auto& [slotid, types] : colname_to_cast_types) {
1175
0
        if (types.size() == 1) {
1176
0
            _cast_types_for_variants[slotid] = types[0];
1177
0
        }
1178
0
    }
1179
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE27get_cast_types_for_variantsEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE27get_cast_types_for_variantsEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE27get_cast_types_for_variantsEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE27get_cast_types_for_variantsEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE27get_cast_types_for_variantsEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE27get_cast_types_for_variantsEv
1180
1181
template <typename LocalStateType>
1182
ScanOperatorX<LocalStateType>::ScanOperatorX(ObjectPool* pool, const TPlanNode& tnode,
1183
                                             int operator_id, const DescriptorTbl& descs,
1184
                                             int parallel_tasks)
1185
61
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1186
61
          _enable_condition_cache(tnode.enable_condition_cache),
1187
61
          _runtime_filter_descs(tnode.runtime_filters),
1188
61
          _parallel_tasks(parallel_tasks) {
1189
61
    if (tnode.__isset.push_down_count) {
1190
0
        _push_down_count = tnode.push_down_count;
1191
0
    }
1192
61
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1193
61
}
_ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Line
Count
Source
1185
52
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1186
52
          _enable_condition_cache(tnode.enable_condition_cache),
1187
52
          _runtime_filter_descs(tnode.runtime_filters),
1188
52
          _parallel_tasks(parallel_tasks) {
1189
52
    if (tnode.__isset.push_down_count) {
1190
0
        _push_down_count = tnode.push_down_count;
1191
0
    }
1192
52
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1193
52
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Line
Count
Source
1185
9
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1186
9
          _enable_condition_cache(tnode.enable_condition_cache),
1187
9
          _runtime_filter_descs(tnode.runtime_filters),
1188
9
          _parallel_tasks(parallel_tasks) {
1189
9
    if (tnode.__isset.push_down_count) {
1190
0
        _push_down_count = tnode.push_down_count;
1191
0
    }
1192
9
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1193
9
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
1194
1195
template <typename LocalStateType>
1196
12
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1197
12
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1198
1199
12
    const TQueryOptions& query_options = state->query_options();
1200
12
    if (query_options.__isset.max_scan_key_num) {
1201
0
        _max_scan_key_num = query_options.max_scan_key_num;
1202
0
    }
1203
12
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1204
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1205
0
    }
1206
12
#ifdef BE_TEST
1207
12
    _mem_arb = nullptr;
1208
#else
1209
    _mem_arb = state->get_query_ctx()->mem_arb();
1210
#endif
1211
12
    if (_mem_arb) {
1212
0
        _mem_arb->register_scan_node();
1213
0
        _mem_limiter =
1214
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1215
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1216
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1217
0
    }
1218
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1219
    // Introduced a new field : tnode.push_down_agg_type_opt
1220
    //
1221
    // make it compatible here
1222
12
    if (tnode.__isset.push_down_agg_type_opt) {
1223
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1224
12
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1225
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1226
12
    } else {
1227
12
        _push_down_agg_type = TPushAggOp::type::NONE;
1228
12
    }
1229
12
    if (tnode.__isset.push_down_count_slot_ids) {
1230
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1231
0
    }
1232
1233
12
    if (tnode.__isset.topn_filter_source_node_ids) {
1234
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1235
0
    }
1236
1237
    // Which means the request could be fullfilled in a single segment iterator request.
1238
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1239
    // now add some check for unique_table let running only one instance for select limit n.
1240
12
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1241
11
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1242
11
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1243
11
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1244
10
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1245
10
            if (tnode.limit > 0 &&
1246
10
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1247
1
                _should_run_serial = true;
1248
1
            }
1249
10
        }
1250
11
    }
1251
1252
12
    return Status::OK();
1253
12
}
_ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Line
Count
Source
1196
4
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1197
4
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1198
1199
4
    const TQueryOptions& query_options = state->query_options();
1200
4
    if (query_options.__isset.max_scan_key_num) {
1201
0
        _max_scan_key_num = query_options.max_scan_key_num;
1202
0
    }
1203
4
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1204
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1205
0
    }
1206
4
#ifdef BE_TEST
1207
4
    _mem_arb = nullptr;
1208
#else
1209
    _mem_arb = state->get_query_ctx()->mem_arb();
1210
#endif
1211
4
    if (_mem_arb) {
1212
0
        _mem_arb->register_scan_node();
1213
0
        _mem_limiter =
1214
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1215
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1216
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1217
0
    }
1218
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1219
    // Introduced a new field : tnode.push_down_agg_type_opt
1220
    //
1221
    // make it compatible here
1222
4
    if (tnode.__isset.push_down_agg_type_opt) {
1223
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1224
4
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1225
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1226
4
    } else {
1227
4
        _push_down_agg_type = TPushAggOp::type::NONE;
1228
4
    }
1229
4
    if (tnode.__isset.push_down_count_slot_ids) {
1230
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1231
0
    }
1232
1233
4
    if (tnode.__isset.topn_filter_source_node_ids) {
1234
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1235
0
    }
1236
1237
    // Which means the request could be fullfilled in a single segment iterator request.
1238
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1239
    // now add some check for unique_table let running only one instance for select limit n.
1240
4
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1241
3
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1242
3
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1243
3
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1244
2
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1245
2
            if (tnode.limit > 0 &&
1246
2
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1247
1
                _should_run_serial = true;
1248
1
            }
1249
2
        }
1250
3
    }
1251
1252
4
    return Status::OK();
1253
4
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Line
Count
Source
1196
8
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1197
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1198
1199
8
    const TQueryOptions& query_options = state->query_options();
1200
8
    if (query_options.__isset.max_scan_key_num) {
1201
0
        _max_scan_key_num = query_options.max_scan_key_num;
1202
0
    }
1203
8
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1204
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1205
0
    }
1206
8
#ifdef BE_TEST
1207
8
    _mem_arb = nullptr;
1208
#else
1209
    _mem_arb = state->get_query_ctx()->mem_arb();
1210
#endif
1211
8
    if (_mem_arb) {
1212
0
        _mem_arb->register_scan_node();
1213
0
        _mem_limiter =
1214
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1215
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1216
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1217
0
    }
1218
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1219
    // Introduced a new field : tnode.push_down_agg_type_opt
1220
    //
1221
    // make it compatible here
1222
8
    if (tnode.__isset.push_down_agg_type_opt) {
1223
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1224
8
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1225
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1226
8
    } else {
1227
8
        _push_down_agg_type = TPushAggOp::type::NONE;
1228
8
    }
1229
8
    if (tnode.__isset.push_down_count_slot_ids) {
1230
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1231
0
    }
1232
1233
8
    if (tnode.__isset.topn_filter_source_node_ids) {
1234
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1235
0
    }
1236
1237
    // Which means the request could be fullfilled in a single segment iterator request.
1238
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1239
    // now add some check for unique_table let running only one instance for select limit n.
1240
8
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1241
8
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1242
8
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1243
8
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1244
8
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1245
8
            if (tnode.limit > 0 &&
1246
8
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1247
0
                _should_run_serial = true;
1248
0
            }
1249
8
        }
1250
8
    }
1251
1252
8
    return Status::OK();
1253
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
1254
1255
template <typename LocalStateType>
1256
8
Status ScanOperatorX<LocalStateType>::prepare(RuntimeState* state) {
1257
8
    _output_tuple_desc = state->desc_tbl().get_tuple_descriptor(_output_tuple_id);
1258
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::prepare(state));
1259
1260
8
    const auto slots = _output_tuple_desc->slots();
1261
18
    for (auto* slot : slots) {
1262
18
        _colname_to_slot_id[slot->col_name()] = slot->id();
1263
18
        _slot_id_to_slot_desc[slot->id()] = slot;
1264
18
    }
1265
8
    for (auto id : _topn_filter_source_node_ids) {
1266
0
        int cid = -1;
1267
0
        if (state->get_query_ctx()->get_runtime_predicate(id).target_is_slot(node_id())) {
1268
0
            auto s = _slot_id_to_slot_desc[state->get_query_ctx()
1269
0
                                                   ->get_runtime_predicate(id)
1270
0
                                                   .get_texpr(node_id())
1271
0
                                                   .nodes[0]
1272
0
                                                   .slot_ref.slot_id];
1273
0
            DCHECK(s != nullptr);
1274
0
            if (can_push_down_column_predicate(s)) {
1275
0
                cid = _output_tuple_desc->get_column_id(s->id());
1276
0
            }
1277
0
        }
1278
0
        RETURN_IF_ERROR(state->get_query_ctx()->get_runtime_predicate(id).init_target(
1279
0
                node_id(), _slot_id_to_slot_desc, cid));
1280
0
    }
1281
1282
8
    RETURN_IF_CANCELLED(state);
1283
8
    return Status::OK();
1284
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE7prepareEPNS_12RuntimeStateE
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE7prepareEPNS_12RuntimeStateE
Line
Count
Source
1256
8
Status ScanOperatorX<LocalStateType>::prepare(RuntimeState* state) {
1257
8
    _output_tuple_desc = state->desc_tbl().get_tuple_descriptor(_output_tuple_id);
1258
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::prepare(state));
1259
1260
8
    const auto slots = _output_tuple_desc->slots();
1261
18
    for (auto* slot : slots) {
1262
18
        _colname_to_slot_id[slot->col_name()] = slot->id();
1263
18
        _slot_id_to_slot_desc[slot->id()] = slot;
1264
18
    }
1265
8
    for (auto id : _topn_filter_source_node_ids) {
1266
0
        int cid = -1;
1267
0
        if (state->get_query_ctx()->get_runtime_predicate(id).target_is_slot(node_id())) {
1268
0
            auto s = _slot_id_to_slot_desc[state->get_query_ctx()
1269
0
                                                   ->get_runtime_predicate(id)
1270
0
                                                   .get_texpr(node_id())
1271
0
                                                   .nodes[0]
1272
0
                                                   .slot_ref.slot_id];
1273
0
            DCHECK(s != nullptr);
1274
0
            if (can_push_down_column_predicate(s)) {
1275
0
                cid = _output_tuple_desc->get_column_id(s->id());
1276
0
            }
1277
0
        }
1278
0
        RETURN_IF_ERROR(state->get_query_ctx()->get_runtime_predicate(id).init_target(
1279
0
                node_id(), _slot_id_to_slot_desc, cid));
1280
0
    }
1281
1282
8
    RETURN_IF_CANCELLED(state);
1283
8
    return Status::OK();
1284
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE7prepareEPNS_12RuntimeStateE
1285
1286
template <typename Derived>
1287
6
Status ScanLocalState<Derived>::close(RuntimeState* state) {
1288
6
    if (_closed) {
1289
0
        return Status::OK();
1290
0
    }
1291
6
    COUNTER_UPDATE(exec_time_counter(), _scan_dependency->watcher_elapse_time());
1292
6
    int64_t rf_time = 0;
1293
6
    for (auto& dep : _filter_dependencies) {
1294
0
        rf_time += dep->watcher_elapse_time();
1295
0
    }
1296
6
    COUNTER_UPDATE(exec_time_counter(), rf_time);
1297
6
    SCOPED_TIMER(_close_timer);
1298
1299
6
    SCOPED_TIMER(exec_time_counter());
1300
6
    if (auto ctx = _scanner_ctx.load()) {
1301
0
        ctx->stop_scanners(state);
1302
        // _scanner_ctx may be accessed in debug_string concurrently
1303
        // so use atomic shared ptr to avoid use after free
1304
0
        _scanner_ctx.store(nullptr);
1305
0
    }
1306
6
    std::list<std::shared_ptr<ScannerDelegate>> {}.swap(_scanners);
1307
6
    COUNTER_SET(_wait_for_dependency_timer, _scan_dependency->watcher_elapse_time());
1308
6
    COUNTER_SET(_wait_for_rf_timer, rf_time);
1309
6
    _helper.collect_realtime_profile(custom_profile());
1310
6
    return PipelineXLocalState<>::close(state);
1311
6
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE5closeEPNS_12RuntimeStateE
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE5closeEPNS_12RuntimeStateE
Line
Count
Source
1287
6
Status ScanLocalState<Derived>::close(RuntimeState* state) {
1288
6
    if (_closed) {
1289
0
        return Status::OK();
1290
0
    }
1291
6
    COUNTER_UPDATE(exec_time_counter(), _scan_dependency->watcher_elapse_time());
1292
6
    int64_t rf_time = 0;
1293
6
    for (auto& dep : _filter_dependencies) {
1294
0
        rf_time += dep->watcher_elapse_time();
1295
0
    }
1296
6
    COUNTER_UPDATE(exec_time_counter(), rf_time);
1297
6
    SCOPED_TIMER(_close_timer);
1298
1299
6
    SCOPED_TIMER(exec_time_counter());
1300
6
    if (auto ctx = _scanner_ctx.load()) {
1301
0
        ctx->stop_scanners(state);
1302
        // _scanner_ctx may be accessed in debug_string concurrently
1303
        // so use atomic shared ptr to avoid use after free
1304
0
        _scanner_ctx.store(nullptr);
1305
0
    }
1306
6
    std::list<std::shared_ptr<ScannerDelegate>> {}.swap(_scanners);
1307
6
    COUNTER_SET(_wait_for_dependency_timer, _scan_dependency->watcher_elapse_time());
1308
6
    COUNTER_SET(_wait_for_rf_timer, rf_time);
1309
6
    _helper.collect_realtime_profile(custom_profile());
1310
6
    return PipelineXLocalState<>::close(state);
1311
6
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE5closeEPNS_12RuntimeStateE
1312
1313
template <typename LocalStateType>
1314
0
Status ScanOperatorX<LocalStateType>::get_block_impl(RuntimeState* state, Block* block, bool* eos) {
1315
0
    auto& local_state = get_local_state(state);
1316
0
    SCOPED_TIMER(local_state.exec_time_counter());
1317
1318
0
    if (state->is_cancelled()) {
1319
0
        if (auto ctx = local_state._scanner_ctx.load()) {
1320
0
            ctx->stop_scanners(state);
1321
0
        }
1322
0
        return state->cancel_reason();
1323
0
    }
1324
1325
0
    if (local_state._eos) {
1326
0
        *eos = true;
1327
0
        return Status::OK();
1328
0
    }
1329
1330
0
    auto ctx = local_state._scanner_ctx.load();
1331
1332
0
    DCHECK(ctx != nullptr);
1333
0
    RETURN_IF_ERROR(ctx->get_block_from_queue(state, block, eos, 0));
1334
1335
0
    local_state.reached_limit(block, eos);
1336
0
    if (*eos) {
1337
        // reach limit, stop the scanners.
1338
0
        ctx->stop_scanners(state);
1339
0
        local_state._scanner_profile->add_info_string("EOS", "True");
1340
0
    }
1341
1342
0
    return Status::OK();
1343
0
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE14get_block_implEPNS_12RuntimeStateEPNS_5BlockEPb
1344
1345
template <typename LocalStateType>
1346
0
size_t ScanOperatorX<LocalStateType>::get_reserve_mem_size(RuntimeState* state) {
1347
0
    auto& local_state = get_local_state(state);
1348
0
    auto ctx = local_state._scanner_ctx.load();
1349
0
    if (!local_state._opened || local_state._closed || !ctx) {
1350
0
        return config::doris_scanner_row_bytes;
1351
0
    }
1352
1353
0
    if (local_state.low_memory_mode()) {
1354
0
        return ctx->low_memory_mode_scan_bytes_per_scanner() * ctx->low_memory_mode_scanners();
1355
0
    } else {
1356
0
        const auto peak_usage = local_state._memory_used_counter->value();
1357
0
        const auto block_usage = ctx->block_memory_usage();
1358
0
        if (peak_usage > 0) {
1359
            // It is only a safty check, to avoid some counter not right.
1360
0
            if (peak_usage > block_usage) {
1361
0
                return peak_usage - block_usage;
1362
0
            } else {
1363
0
                return config::doris_scanner_row_bytes;
1364
0
            }
1365
0
        } else {
1366
            // If the scan operator is first time to run, then we think it will occupy doris_scanner_row_bytes.
1367
            // It maybe a little smaller than actual usage.
1368
0
            return config::doris_scanner_row_bytes;
1369
            // return local_state._scanner_ctx->max_bytes_in_queue();
1370
0
        }
1371
0
    }
1372
0
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE
1373
1374
template class ScanOperatorX<OlapScanLocalState>;
1375
template class ScanLocalState<OlapScanLocalState>;
1376
template class ScanOperatorX<JDBCScanLocalState>;
1377
template class ScanLocalState<JDBCScanLocalState>;
1378
template class ScanOperatorX<FileScanLocalState>;
1379
template class ScanLocalState<FileScanLocalState>;
1380
template class ScanLocalState<MetaScanLocalState>;
1381
template class ScanOperatorX<MetaScanLocalState>;
1382
template class ScanOperatorX<GroupCommitLocalState>;
1383
template class ScanLocalState<GroupCommitLocalState>;
1384
1385
#ifdef BE_TEST
1386
template class ScanOperatorX<MockScanLocalState>;
1387
template class ScanLocalState<MockScanLocalState>;
1388
#endif
1389
1390
} // namespace doris