Coverage Report

Created: 2026-07-24 22:25

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/null_predicate.h"
55
#include "storage/predicate/predicate_creator.h"
56
57
namespace doris {
58
59
#define RETURN_IF_PUSH_DOWN(stmt, status)    \
60
198
    if (pdt == PushDownType::UNACCEPTABLE) { \
61
198
        status = stmt;                       \
62
198
        if (!status.ok()) {                  \
63
0
            return;                          \
64
0
        }                                    \
65
198
    } else {                                 \
66
0
        return;                              \
67
0
    }
68
69
template <typename Derived>
70
44
bool ScanLocalState<Derived>::should_run_serial() const {
71
44
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
72
44
}
_ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE17should_run_serialEv
Line
Count
Source
70
36
bool ScanLocalState<Derived>::should_run_serial() const {
71
36
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
72
36
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17should_run_serialEv
_ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE17should_run_serialEv
Line
Count
Source
70
8
bool ScanLocalState<Derived>::should_run_serial() const {
71
8
    return _parent->cast<typename Derived::Parent>()._should_run_serial;
72
8
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE17should_run_serialEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17should_run_serialEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE17should_run_serialEv
73
74
Status ScanLocalStateBase::update_late_arrival_runtime_filter(RuntimeState* state,
75
2
                                                              int& arrived_rf_num) {
76
    // Lock needed because _conjuncts can be accessed concurrently by multiple scanner threads
77
2
    LockGuard lock(_conjuncts_lock);
78
2
    size_t conjuncts_before = _conjuncts.size();
79
2
    RETURN_IF_ERROR(_helper.try_append_late_arrival_runtime_filter(state, _parent->row_descriptor(),
80
2
                                                                   arrived_rf_num, _conjuncts));
81
2
    if (state->enable_adjust_conjunct_order_by_cost()) {
82
0
        std::ranges::stable_sort(_conjuncts, [](const auto& a, const auto& b) {
83
0
            return a->execute_cost() < b->execute_cost();
84
0
        });
85
0
    };
86
    // Only re-run partition pruning when try_append_late_arrival_runtime_filter
87
    // actually appended new conjuncts. Otherwise this hook would re-scan all
88
    // partition boundaries on every scheduler pass while there are still
89
    // unapplied RFs (Scanner::_applied_rf_num is not advanced here), wasting
90
    // CPU re-evaluating the same set of RFs against the same boundaries.
91
2
    if (_conjuncts.size() > conjuncts_before) {
92
0
        RETURN_IF_ERROR(_on_runtime_filter_update());
93
0
    }
94
2
    return Status::OK();
95
2
}
96
97
2
Status ScanLocalStateBase::clone_conjunct_ctxs(VExprContextSPtrs& scanner_conjuncts) {
98
    // Lock needed because _conjuncts can be accessed concurrently by multiple scanner threads
99
2
    LockGuard lock(_conjuncts_lock);
100
2
    scanner_conjuncts.resize(_conjuncts.size());
101
2
    for (size_t i = 0; i != _conjuncts.size(); ++i) {
102
0
        RETURN_IF_ERROR(_conjuncts[i]->clone(_state, scanner_conjuncts[i]));
103
0
    }
104
2
    return Status::OK();
105
2
}
106
107
0
bool ScanLocalStateBase::is_partition_pruned(int64_t partition_id) const {
108
0
    return _rf_partition_pruner.is_partition_pruned(partition_id);
109
0
}
110
111
0
Status ScanLocalStateBase::_on_runtime_filter_update() {
112
0
    const auto* parsed = _parent->parsed_partition_boundaries();
113
0
    if (parsed != nullptr && !parsed->empty()) {
114
0
        RETURN_IF_ERROR(_do_partition_pruning_by_rf());
115
0
    }
116
0
    return Status::OK();
117
0
}
118
119
0
Status ScanLocalStateBase::_do_partition_pruning_by_rf() {
120
0
    if (!_state->query_options().enable_runtime_filter_partition_prune) {
121
0
        return Status::OK();
122
0
    }
123
0
    const auto* parsed = _parent->parsed_partition_boundaries();
124
0
    if (parsed == nullptr || parsed->empty()) {
125
0
        return Status::OK();
126
0
    }
127
0
    int64_t newly_pruned = 0;
128
0
    RETURN_IF_ERROR(_rf_partition_pruner.prune_by_runtime_filters(
129
0
            *parsed, _conjuncts, _parent->runtime_filter_descs(), _parent->node_id(),
130
0
            &newly_pruned));
131
0
    if (newly_pruned > 0) {
132
0
        COUNTER_SET(_partitions_pruned_by_rf_counter,
133
0
                    _rf_partition_pruner.pruned_partition_count());
134
0
    }
135
0
    return Status::OK();
136
0
}
137
138
0
int ScanLocalStateBase::max_scanners_concurrency(RuntimeState* state) const {
139
    // For select * from table limit 10; should just use one thread.
140
0
    if (should_run_serial()) {
141
0
        return 1;
142
0
    }
143
    /*
144
     * The max concurrency of scanners for each ScanLocalStateBase is determined by:
145
     * 1. User specified max_scanners_concurrency which is set through session variable.
146
     * 2. Default: 4
147
     *
148
     * If this is a serial operator, the max concurrency should multiply by the number of parallel instances of the operator.
149
     */
150
0
    return (state->max_scanners_concurrency() > 0 ? state->max_scanners_concurrency() : 4) *
151
0
           (state->query_parallel_instance_num() / _parent->parallelism(state));
152
0
}
153
154
36
int ScanLocalStateBase::min_scanners_concurrency(RuntimeState* state) const {
155
36
    if (should_run_serial()) {
156
0
        return 1;
157
0
    }
158
    /*
159
     * The min concurrency of scanners for each ScanLocalStateBase is determined by:
160
     * 1. User specified min_scanners_concurrency which is set through session variable.
161
     * 2. Default: 1
162
     *
163
     * If this is a serial operator, the max concurrency should multiply by the number of parallel instances of the operator.
164
     */
165
36
    return (state->min_scanners_concurrency() > 0 ? state->min_scanners_concurrency() : 1) *
166
36
           (state->query_parallel_instance_num() / _parent->parallelism(state));
167
36
}
168
169
0
ScannerScheduler* ScanLocalStateBase::scan_scheduler(RuntimeState* state) const {
170
0
    return state->get_query_ctx()->get_scan_scheduler();
171
0
}
172
173
template <typename Derived>
174
10
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
175
10
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
176
10
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
177
10
                                                 _parent->get_name() + "_DEPENDENCY");
178
10
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
179
10
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
180
10
    SCOPED_TIMER(exec_time_counter());
181
10
    SCOPED_TIMER(_init_timer);
182
10
    auto& p = _parent->cast<typename Derived::Parent>();
183
10
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
184
10
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
185
10
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
186
10
    RETURN_IF_ERROR(_init_profile());
187
10
    set_scan_ranges(state, info.scan_ranges);
188
189
10
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
190
10
    _instance_idx = info.task_idx;
191
10
    return Status::OK();
192
10
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Line
Count
Source
174
8
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
175
8
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
176
8
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
177
8
                                                 _parent->get_name() + "_DEPENDENCY");
178
8
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
179
8
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
180
8
    SCOPED_TIMER(exec_time_counter());
181
8
    SCOPED_TIMER(_init_timer);
182
8
    auto& p = _parent->cast<typename Derived::Parent>();
183
8
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
184
8
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
185
8
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
186
8
    RETURN_IF_ERROR(_init_profile());
187
8
    set_scan_ranges(state, info.scan_ranges);
188
189
8
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
190
8
    _instance_idx = info.task_idx;
191
8
    return Status::OK();
192
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE
Line
Count
Source
174
2
Status ScanLocalState<Derived>::init(RuntimeState* state, LocalStateInfo& info) {
175
2
    RETURN_IF_ERROR(PipelineXLocalState<>::init(state, info));
176
2
    _scan_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(),
177
2
                                                 _parent->get_name() + "_DEPENDENCY");
178
2
    _wait_for_dependency_timer = ADD_TIMER_WITH_LEVEL(
179
2
            common_profile(), "WaitForDependency[" + _scan_dependency->name() + "]Time", 1);
180
2
    SCOPED_TIMER(exec_time_counter());
181
2
    SCOPED_TIMER(_init_timer);
182
2
    auto& p = _parent->cast<typename Derived::Parent>();
183
2
    _max_pushdown_conditions_per_column = p._max_pushdown_conditions_per_column;
184
2
    RETURN_IF_ERROR(_helper.init(state, p.is_serial_operator(), p.node_id(), p.operator_id(),
185
2
                                 _filter_dependencies, p.get_name() + "_FILTER_DEPENDENCY"));
186
2
    RETURN_IF_ERROR(_init_profile());
187
2
    set_scan_ranges(state, info.scan_ranges);
188
189
2
    _wait_for_rf_timer = ADD_TIMER(common_profile(), "WaitForRuntimeFilter");
190
2
    _instance_idx = info.task_idx;
191
2
    return Status::OK();
192
2
}
193
194
static std::string predicates_to_string(
195
        const phmap::flat_hash_map<int, std::vector<std::shared_ptr<ColumnPredicate>>>&
196
0
                slot_id_to_predicates) {
197
0
    fmt::memory_buffer debug_string_buffer;
198
0
    for (const auto& [slot_id, predicates] : slot_id_to_predicates) {
199
0
        if (predicates.empty()) {
200
0
            continue;
201
0
        }
202
0
        fmt::format_to(debug_string_buffer, "Slot ID: {}: [", slot_id);
203
0
        for (const auto& predicate : predicates) {
204
0
            fmt::format_to(debug_string_buffer, "{{{}}}, ", predicate->debug_string());
205
0
        }
206
0
        fmt::format_to(debug_string_buffer, "] ");
207
0
    }
208
0
    return fmt::to_string(debug_string_buffer);
209
0
}
210
211
template <typename Derived>
212
0
Status ScanLocalState<Derived>::open(RuntimeState* state) {
213
0
    SCOPED_TIMER(exec_time_counter());
214
0
    SCOPED_TIMER(_open_timer);
215
0
    if (_opened) {
216
0
        return Status::OK();
217
0
    }
218
0
    RETURN_IF_ERROR(PipelineXLocalState<>::open(state));
219
0
    auto& p = _parent->cast<typename Derived::Parent>();
220
221
    // init id_file_map() for runtime state
222
0
    std::vector<SlotDescriptor*> slots = p._output_tuple_desc->slots();
223
0
    for (auto slot : slots) {
224
0
        if (slot->col_name().starts_with(BeConsts::GLOBAL_ROWID_COL)) {
225
0
            state->set_id_file_map();
226
0
        }
227
0
    }
228
229
0
    _common_expr_ctxs_push_down.resize(p._common_expr_ctxs_push_down.size());
230
0
    for (size_t i = 0; i < _common_expr_ctxs_push_down.size(); i++) {
231
0
        RETURN_IF_ERROR(
232
0
                p._common_expr_ctxs_push_down[i]->clone(state, _common_expr_ctxs_push_down[i]));
233
0
    }
234
0
    size_t conjuncts_before = _conjuncts.size();
235
0
    RETURN_IF_ERROR(_helper.acquire_runtime_filter(state, _conjuncts, p.row_descriptor()));
236
0
    if (_conjuncts.size() > conjuncts_before) {
237
0
        RETURN_IF_ERROR(_on_runtime_filter_update());
238
0
    }
239
240
    // Disable condition cache in topn filter valid. TODO:: Try to support the topn filter in condition cache
241
0
    if (state->query_options().condition_cache_digest && p._topn_filter_source_node_ids.empty()) {
242
0
        _condition_cache_digest = state->query_options().condition_cache_digest;
243
0
        for (auto& conjunct : _conjuncts) {
244
0
            _condition_cache_digest = conjunct->get_digest(_condition_cache_digest);
245
0
            if (!_condition_cache_digest) {
246
0
                break;
247
0
            }
248
0
        }
249
0
    } else {
250
0
        _condition_cache_digest = 0;
251
0
    }
252
253
0
    RETURN_IF_ERROR(_process_conjuncts(state));
254
255
0
    if (state->enable_profile()) {
256
0
        custom_profile()->add_info_string("PushDownPredicates",
257
0
                                          predicates_to_string(_slot_id_to_predicates));
258
0
    }
259
260
0
    auto status = _eos ? Status::OK() : _prepare_scanners();
261
0
    RETURN_IF_ERROR(status);
262
0
    if (auto ctx = _scanner_ctx.load()) {
263
0
        DCHECK(!_eos && _num_scanners->value() > 0);
264
0
        RETURN_IF_ERROR(ctx->init());
265
0
    }
266
0
    _opened = true;
267
0
    return status;
268
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
269
270
static void init_slot_value_range(
271
        phmap::flat_hash_map<int, ColumnValueRangeType>& slot_id_to_value_range,
272
0
        SlotDescriptor* slot, const DataTypePtr type_desc) {
273
0
    switch (type_desc->get_primitive_type()) {
274
0
#define M(NAME)                                                                        \
275
0
    case TYPE_##NAME: {                                                                \
276
0
        ColumnValueRange<TYPE_##NAME> range(slot->col_name(), slot->is_nullable(),     \
277
0
                                            cast_set<int>(type_desc->get_precision()), \
278
0
                                            cast_set<int>(type_desc->get_scale()));    \
279
0
        slot_id_to_value_range[slot->id()] = std::move(range);                         \
280
0
        break;                                                                         \
281
0
    }
282
0
#define APPLY_FOR_SCALAR_TYPE(M) \
283
0
    M(TINYINT)                   \
284
0
    M(SMALLINT)                  \
285
0
    M(INT)                       \
286
0
    M(BIGINT)                    \
287
0
    M(LARGEINT)                  \
288
0
    M(FLOAT)                     \
289
0
    M(DOUBLE)                    \
290
0
    M(CHAR)                      \
291
0
    M(DATE)                      \
292
0
    M(DATETIME)                  \
293
0
    M(DATEV2)                    \
294
0
    M(DATETIMEV2)                \
295
0
    M(TIMESTAMPTZ)               \
296
0
    M(VARCHAR)                   \
297
0
    M(STRING)                    \
298
0
    M(DECIMAL32)                 \
299
0
    M(DECIMAL64)                 \
300
0
    M(DECIMAL128I)               \
301
0
    M(DECIMAL256)                \
302
0
    M(DECIMALV2)                 \
303
0
    M(BOOLEAN)                   \
304
0
    M(IPV4)                      \
305
0
    M(IPV6)
306
0
        APPLY_FOR_SCALAR_TYPE(M)
307
0
#undef M
308
0
    default: {
309
0
        break;
310
0
    }
311
0
    }
312
0
}
313
314
/// Step 1 of the scan-key generation pipeline.
315
///
316
/// Parse SQL WHERE conjuncts into per-column ColumnValueRange objects stored in
317
/// _slot_id_to_value_range.  Each ColumnValueRange captures all constraints on
318
/// one column (fixed values from IN / =, or min/max bounds from < / <= / > / >=).
319
///
320
/// Example – "WHERE k1 IN (1, 2) AND k2 >= 5 AND k2 < 10 AND v > 100":
321
///   => ColumnValueRange<k1>: fixed_values = {1, 2}
322
///   => ColumnValueRange<k2>: scope [5, 10)  (low=5 >=, high=10 <)
323
///   => ColumnValueRange<v>:  scope (100, MAX]  (low=100 >, high=MAX <=)
324
///   The k1/k2 ranges will later become scan keys (since they're key columns);
325
///   v's range stays as a residual predicate / olap filter.
326
///
327
/// After this step, _build_key_ranges_and_filters() picks up the key-column
328
/// ColumnValueRanges and feeds them to OlapScanKeys::extend_scan_key().
329
template <typename Derived>
330
0
Status ScanLocalState<Derived>::_normalize_conjuncts(RuntimeState* state) {
331
0
    auto& p = _parent->cast<typename Derived::Parent>();
332
    // The conjuncts is always on output tuple, so use _output_tuple_desc;
333
0
    std::vector<SlotDescriptor*> slots = p._output_tuple_desc->slots();
334
335
0
    for (auto& slot : slots) {
336
0
        init_slot_value_range(_slot_id_to_value_range, slot, slot->type());
337
0
        _slot_id_to_predicates.insert(
338
0
                {slot->id(), std::vector<std::shared_ptr<ColumnPredicate>>()});
339
0
    }
340
341
0
    get_cast_types_for_variants();
342
0
    for (const auto& [colname, type] : _cast_types_for_variants) {
343
0
        auto* slot = p._slot_id_to_slot_desc[p._colname_to_slot_id[colname]];
344
0
        init_slot_value_range(_slot_id_to_value_range, slot, type);
345
0
        _slot_id_to_predicates.insert(
346
0
                {slot->id(), std::vector<std::shared_ptr<ColumnPredicate>>()});
347
0
    }
348
349
0
    RETURN_IF_ERROR(_get_topn_filters(state));
350
351
0
    for (auto it = _conjuncts.begin(); it != _conjuncts.end();) {
352
0
        auto& conjunct = *it;
353
0
        if (conjunct->root()) {
354
0
            VExprSPtr new_root;
355
0
            RETURN_IF_ERROR(_normalize_predicate(conjunct.get(), conjunct->root(), new_root));
356
0
            if (new_root) {
357
0
                conjunct->set_root(new_root);
358
0
                if (_should_push_down_common_expr(conjunct->root())) {
359
0
                    _common_expr_ctxs_push_down.emplace_back(conjunct);
360
0
                    it = _conjuncts.erase(it);
361
0
                    continue;
362
0
                }
363
0
            } else { // All conjuncts are pushed down as predicate column
364
0
                _stale_expr_ctxs.emplace_back(
365
0
                        conjunct); // avoid function context and constant str being freed
366
0
                it = _conjuncts.erase(it);
367
0
                continue;
368
0
            }
369
0
        }
370
0
        ++it;
371
0
    }
372
373
0
    if (state->enable_profile()) {
374
0
        std::string message;
375
0
        for (auto& conjunct : _conjuncts) {
376
0
            if (conjunct->root()) {
377
0
                if (!message.empty()) {
378
0
                    message += ", ";
379
0
                }
380
0
                message += conjunct->root()->debug_string();
381
0
            }
382
0
        }
383
0
        custom_profile()->add_info_string("RemainedPredicates", message);
384
0
    }
385
386
0
    for (auto& it : _slot_id_to_value_range) {
387
0
        std::visit(
388
0
                [&](auto&& range) {
389
0
                    if (range.is_empty_value_range()) {
390
0
                        _eos = true;
391
0
                        _scan_dependency->set_ready();
392
0
                    }
393
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_13PrimitiveTypeE42EEEEEDaS6_
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_13PrimitiveTypeE42EEEEEDaS6_
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_13PrimitiveTypeE42EEEEEDaS6_
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_13PrimitiveTypeE42EEEEEDaS6_
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_13PrimitiveTypeE42EEEEEDaS6_
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_13PrimitiveTypeE42EEEEEDaS6_
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_
394
0
                it.second);
395
0
    }
396
397
0
    return Status::OK();
398
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
399
400
template <typename Derived>
401
Status ScanLocalState<Derived>::_normalize_predicate(VExprContext* context, const VExprSPtr& root,
402
210
                                                     VExprSPtr& output_expr) {
403
210
    auto expr_root = root->is_rf_wrapper() ? root->get_impl() : root;
404
210
    PushDownType pdt = PushDownType::UNACCEPTABLE;
405
210
    if (dynamic_cast<VirtualSlotRef*>(expr_root.get())) {
406
        // If the expr has virtual slot ref, we need to keep it in the tree.
407
0
        output_expr = expr_root;
408
0
        return Status::OK();
409
0
    }
410
411
210
    SlotDescriptor* slot = nullptr;
412
210
    ColumnValueRangeType* range = nullptr;
413
210
    RETURN_IF_ERROR(_eval_const_conjuncts(context, &pdt));
414
210
    if (pdt == PushDownType::ACCEPTABLE) {
415
4
        output_expr = nullptr;
416
4
        return Status::OK();
417
4
    }
418
206
    std::shared_ptr<VSlotRef> slotref;
419
376
    for (const auto& child : expr_root->children()) {
420
376
        if (VExpr::expr_without_cast(child)->node_type() != TExprNodeType::SLOT_REF) {
421
            // not a slot ref(column)
422
174
            continue;
423
174
        }
424
202
        slotref = std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(child));
425
202
    }
426
206
    if (_is_predicate_acting_on_slot(expr_root->children(), &slot, &range)) {
427
198
        Status status = Status::OK();
428
198
        std::visit(
429
198
                [&](auto& value_range) {
430
198
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
431
198
                    {
432
198
                        Defer attach_defer = [&]() {
433
198
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
0
                                        rf_expr->filter_id(),
437
0
                                        rf_expr->predicate_filtered_rows_counter(),
438
0
                                        rf_expr->predicate_input_rows_counter(),
439
0
                                        rf_expr->predicate_always_true_rows_counter(),
440
0
                                        context->get_runtime_filter_selectivity());
441
0
                            }
442
198
                        };
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_13PrimitiveTypeE42EEEEEDaSC_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_13PrimitiveTypeE42EEEEEDaSC_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_13PrimitiveTypeE42EEEEEDaSC_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_13PrimitiveTypeE42EEEEEDaSC_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_13PrimitiveTypeE42EEEEEDaSC_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
432
30
                        Defer attach_defer = [&]() {
433
30
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
0
                                        rf_expr->filter_id(),
437
0
                                        rf_expr->predicate_filtered_rows_counter(),
438
0
                                        rf_expr->predicate_input_rows_counter(),
439
0
                                        rf_expr->predicate_always_true_rows_counter(),
440
0
                                        context->get_runtime_filter_selectivity());
441
0
                            }
442
30
                        };
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
432
126
                        Defer attach_defer = [&]() {
433
126
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
0
                                        rf_expr->filter_id(),
437
0
                                        rf_expr->predicate_filtered_rows_counter(),
438
0
                                        rf_expr->predicate_input_rows_counter(),
439
0
                                        rf_expr->predicate_always_true_rows_counter(),
440
0
                                        context->get_runtime_filter_selectivity());
441
0
                            }
442
126
                        };
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_13PrimitiveTypeE42EEEEEDaSC_ENKUlvE_clEv
Line
Count
Source
432
42
                        Defer attach_defer = [&]() {
433
42
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
0
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
0
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
0
                                        rf_expr->filter_id(),
437
0
                                        rf_expr->predicate_filtered_rows_counter(),
438
0
                                        rf_expr->predicate_input_rows_counter(),
439
0
                                        rf_expr->predicate_always_true_rows_counter(),
440
0
                                        context->get_runtime_filter_selectivity());
441
0
                            }
442
42
                        };
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
443
198
                        switch (expr->node_type()) {
444
20
                        case TExprNodeType::IN_PRED:
445
20
                            RETURN_IF_PUSH_DOWN(
446
20
                                    _normalize_in_predicate(context, expr, slot,
447
20
                                                            _slot_id_to_predicates[slot->id()],
448
20
                                                            value_range, &pdt),
449
20
                                    status);
450
20
                            break;
451
170
                        case TExprNodeType::BINARY_PRED:
452
170
                            RETURN_IF_PUSH_DOWN(
453
170
                                    _normalize_binary_predicate(context, expr, slot,
454
170
                                                                _slot_id_to_predicates[slot->id()],
455
170
                                                                value_range, &pdt),
456
170
                                    status);
457
170
                            break;
458
8
                        case TExprNodeType::FUNCTION_CALL:
459
8
                            if (expr->is_topn_filter()) {
460
0
                                RETURN_IF_PUSH_DOWN(
461
0
                                        _normalize_topn_filter(context, expr, slot,
462
0
                                                               _slot_id_to_predicates[slot->id()],
463
0
                                                               &pdt),
464
0
                                        status);
465
8
                            } else {
466
8
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
467
8
                                                            context, expr, slot,
468
8
                                                            _slot_id_to_predicates[slot->id()],
469
8
                                                            value_range, &pdt),
470
8
                                                    status);
471
8
                            }
472
8
                            break;
473
8
                        case TExprNodeType::BLOOM_PRED:
474
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
475
0
                                                        context, root, slot,
476
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
477
0
                                                status);
478
0
                            break;
479
0
                        default:
480
0
                            break;
481
198
                        }
482
198
                    }
483
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
484
198
                    if (state()->enable_function_pushdown()) {
485
0
                        RETURN_IF_PUSH_DOWN(_normalize_function_filters(context, slot, &pdt),
486
0
                                            status);
487
0
                    }
488
198
                },
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_13PrimitiveTypeE42EEEEEDaSC_
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_13PrimitiveTypeE42EEEEEDaSC_
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_13PrimitiveTypeE42EEEEEDaSC_
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_13PrimitiveTypeE42EEEEEDaSC_
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_13PrimitiveTypeE42EEEEEDaSC_
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
429
30
                [&](auto& value_range) {
430
30
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
431
30
                    {
432
30
                        Defer attach_defer = [&]() {
433
30
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
30
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
30
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
30
                                        rf_expr->filter_id(),
437
30
                                        rf_expr->predicate_filtered_rows_counter(),
438
30
                                        rf_expr->predicate_input_rows_counter(),
439
30
                                        rf_expr->predicate_always_true_rows_counter(),
440
30
                                        context->get_runtime_filter_selectivity());
441
30
                            }
442
30
                        };
443
30
                        switch (expr->node_type()) {
444
12
                        case TExprNodeType::IN_PRED:
445
12
                            RETURN_IF_PUSH_DOWN(
446
12
                                    _normalize_in_predicate(context, expr, slot,
447
12
                                                            _slot_id_to_predicates[slot->id()],
448
12
                                                            value_range, &pdt),
449
12
                                    status);
450
12
                            break;
451
14
                        case TExprNodeType::BINARY_PRED:
452
14
                            RETURN_IF_PUSH_DOWN(
453
14
                                    _normalize_binary_predicate(context, expr, slot,
454
14
                                                                _slot_id_to_predicates[slot->id()],
455
14
                                                                value_range, &pdt),
456
14
                                    status);
457
14
                            break;
458
4
                        case TExprNodeType::FUNCTION_CALL:
459
4
                            if (expr->is_topn_filter()) {
460
0
                                RETURN_IF_PUSH_DOWN(
461
0
                                        _normalize_topn_filter(context, expr, slot,
462
0
                                                               _slot_id_to_predicates[slot->id()],
463
0
                                                               &pdt),
464
0
                                        status);
465
4
                            } else {
466
4
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
467
4
                                                            context, expr, slot,
468
4
                                                            _slot_id_to_predicates[slot->id()],
469
4
                                                            value_range, &pdt),
470
4
                                                    status);
471
4
                            }
472
4
                            break;
473
4
                        case TExprNodeType::BLOOM_PRED:
474
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
475
0
                                                        context, root, slot,
476
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
477
0
                                                status);
478
0
                            break;
479
0
                        default:
480
0
                            break;
481
30
                        }
482
30
                    }
483
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
484
30
                    if (state()->enable_function_pushdown()) {
485
0
                        RETURN_IF_PUSH_DOWN(_normalize_function_filters(context, slot, &pdt),
486
0
                                            status);
487
0
                    }
488
30
                },
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
429
126
                [&](auto& value_range) {
430
126
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
431
126
                    {
432
126
                        Defer attach_defer = [&]() {
433
126
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
126
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
126
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
126
                                        rf_expr->filter_id(),
437
126
                                        rf_expr->predicate_filtered_rows_counter(),
438
126
                                        rf_expr->predicate_input_rows_counter(),
439
126
                                        rf_expr->predicate_always_true_rows_counter(),
440
126
                                        context->get_runtime_filter_selectivity());
441
126
                            }
442
126
                        };
443
126
                        switch (expr->node_type()) {
444
4
                        case TExprNodeType::IN_PRED:
445
4
                            RETURN_IF_PUSH_DOWN(
446
4
                                    _normalize_in_predicate(context, expr, slot,
447
4
                                                            _slot_id_to_predicates[slot->id()],
448
4
                                                            value_range, &pdt),
449
4
                                    status);
450
4
                            break;
451
120
                        case TExprNodeType::BINARY_PRED:
452
120
                            RETURN_IF_PUSH_DOWN(
453
120
                                    _normalize_binary_predicate(context, expr, slot,
454
120
                                                                _slot_id_to_predicates[slot->id()],
455
120
                                                                value_range, &pdt),
456
120
                                    status);
457
120
                            break;
458
2
                        case TExprNodeType::FUNCTION_CALL:
459
2
                            if (expr->is_topn_filter()) {
460
0
                                RETURN_IF_PUSH_DOWN(
461
0
                                        _normalize_topn_filter(context, expr, slot,
462
0
                                                               _slot_id_to_predicates[slot->id()],
463
0
                                                               &pdt),
464
0
                                        status);
465
2
                            } else {
466
2
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
467
2
                                                            context, expr, slot,
468
2
                                                            _slot_id_to_predicates[slot->id()],
469
2
                                                            value_range, &pdt),
470
2
                                                    status);
471
2
                            }
472
2
                            break;
473
2
                        case TExprNodeType::BLOOM_PRED:
474
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
475
0
                                                        context, root, slot,
476
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
477
0
                                                status);
478
0
                            break;
479
0
                        default:
480
0
                            break;
481
126
                        }
482
126
                    }
483
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
484
126
                    if (state()->enable_function_pushdown()) {
485
0
                        RETURN_IF_PUSH_DOWN(_normalize_function_filters(context, slot, &pdt),
486
0
                                            status);
487
0
                    }
488
126
                },
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_13PrimitiveTypeE42EEEEEDaSC_
Line
Count
Source
429
42
                [&](auto& value_range) {
430
42
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
431
42
                    {
432
42
                        Defer attach_defer = [&]() {
433
42
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
42
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
42
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
42
                                        rf_expr->filter_id(),
437
42
                                        rf_expr->predicate_filtered_rows_counter(),
438
42
                                        rf_expr->predicate_input_rows_counter(),
439
42
                                        rf_expr->predicate_always_true_rows_counter(),
440
42
                                        context->get_runtime_filter_selectivity());
441
42
                            }
442
42
                        };
443
42
                        switch (expr->node_type()) {
444
4
                        case TExprNodeType::IN_PRED:
445
4
                            RETURN_IF_PUSH_DOWN(
446
4
                                    _normalize_in_predicate(context, expr, slot,
447
4
                                                            _slot_id_to_predicates[slot->id()],
448
4
                                                            value_range, &pdt),
449
4
                                    status);
450
4
                            break;
451
36
                        case TExprNodeType::BINARY_PRED:
452
36
                            RETURN_IF_PUSH_DOWN(
453
36
                                    _normalize_binary_predicate(context, expr, slot,
454
36
                                                                _slot_id_to_predicates[slot->id()],
455
36
                                                                value_range, &pdt),
456
36
                                    status);
457
36
                            break;
458
2
                        case TExprNodeType::FUNCTION_CALL:
459
2
                            if (expr->is_topn_filter()) {
460
0
                                RETURN_IF_PUSH_DOWN(
461
0
                                        _normalize_topn_filter(context, expr, slot,
462
0
                                                               _slot_id_to_predicates[slot->id()],
463
0
                                                               &pdt),
464
0
                                        status);
465
2
                            } else {
466
2
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
467
2
                                                            context, expr, slot,
468
2
                                                            _slot_id_to_predicates[slot->id()],
469
2
                                                            value_range, &pdt),
470
2
                                                    status);
471
2
                            }
472
2
                            break;
473
2
                        case TExprNodeType::BLOOM_PRED:
474
0
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
475
0
                                                        context, root, slot,
476
0
                                                        _slot_id_to_predicates[slot->id()], &pdt),
477
0
                                                status);
478
0
                            break;
479
0
                        default:
480
0
                            break;
481
42
                        }
482
42
                    }
483
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
484
42
                    if (state()->enable_function_pushdown()) {
485
0
                        RETURN_IF_PUSH_DOWN(_normalize_function_filters(context, slot, &pdt),
486
0
                                            status);
487
0
                    }
488
42
                },
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_
489
198
                *range);
490
198
        RETURN_IF_ERROR(status);
491
198
    }
492
206
    if (pdt == PushDownType::ACCEPTABLE && slotref != nullptr &&
493
206
        slotref->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
494
        // remaining it in the expr tree, in order to filter by function if the pushdown
495
        // predicate is not applied
496
0
        output_expr = expr_root; // remaining in conjunct tree
497
0
        return Status::OK();
498
0
    }
499
500
206
    if (pdt == PushDownType::ACCEPTABLE && _is_key_column(slot->col_name())) {
501
192
        output_expr = nullptr;
502
192
        return Status::OK();
503
192
    } else {
504
        // for PARTIAL_ACCEPTABLE and UNACCEPTABLE, do not remove expr from the tree
505
14
        output_expr = root;
506
14
        return Status::OK();
507
14
    }
508
0
    output_expr = root;
509
0
    return Status::OK();
510
206
}
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
402
210
                                                     VExprSPtr& output_expr) {
403
210
    auto expr_root = root->is_rf_wrapper() ? root->get_impl() : root;
404
210
    PushDownType pdt = PushDownType::UNACCEPTABLE;
405
210
    if (dynamic_cast<VirtualSlotRef*>(expr_root.get())) {
406
        // If the expr has virtual slot ref, we need to keep it in the tree.
407
0
        output_expr = expr_root;
408
0
        return Status::OK();
409
0
    }
410
411
210
    SlotDescriptor* slot = nullptr;
412
210
    ColumnValueRangeType* range = nullptr;
413
210
    RETURN_IF_ERROR(_eval_const_conjuncts(context, &pdt));
414
210
    if (pdt == PushDownType::ACCEPTABLE) {
415
4
        output_expr = nullptr;
416
4
        return Status::OK();
417
4
    }
418
206
    std::shared_ptr<VSlotRef> slotref;
419
376
    for (const auto& child : expr_root->children()) {
420
376
        if (VExpr::expr_without_cast(child)->node_type() != TExprNodeType::SLOT_REF) {
421
            // not a slot ref(column)
422
174
            continue;
423
174
        }
424
202
        slotref = std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(child));
425
202
    }
426
206
    if (_is_predicate_acting_on_slot(expr_root->children(), &slot, &range)) {
427
198
        Status status = Status::OK();
428
198
        std::visit(
429
198
                [&](auto& value_range) {
430
198
                    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
431
198
                    {
432
198
                        Defer attach_defer = [&]() {
433
198
                            if (pdt != PushDownType::UNACCEPTABLE && root->is_rf_wrapper()) {
434
198
                                auto* rf_expr = assert_cast<RuntimeFilterExpr*>(root.get());
435
198
                                _slot_id_to_predicates[slot->id()].back()->attach_profile_counter(
436
198
                                        rf_expr->filter_id(),
437
198
                                        rf_expr->predicate_filtered_rows_counter(),
438
198
                                        rf_expr->predicate_input_rows_counter(),
439
198
                                        rf_expr->predicate_always_true_rows_counter(),
440
198
                                        context->get_runtime_filter_selectivity());
441
198
                            }
442
198
                        };
443
198
                        switch (expr->node_type()) {
444
198
                        case TExprNodeType::IN_PRED:
445
198
                            RETURN_IF_PUSH_DOWN(
446
198
                                    _normalize_in_predicate(context, expr, slot,
447
198
                                                            _slot_id_to_predicates[slot->id()],
448
198
                                                            value_range, &pdt),
449
198
                                    status);
450
198
                            break;
451
198
                        case TExprNodeType::BINARY_PRED:
452
198
                            RETURN_IF_PUSH_DOWN(
453
198
                                    _normalize_binary_predicate(context, expr, slot,
454
198
                                                                _slot_id_to_predicates[slot->id()],
455
198
                                                                value_range, &pdt),
456
198
                                    status);
457
198
                            break;
458
198
                        case TExprNodeType::FUNCTION_CALL:
459
198
                            if (expr->is_topn_filter()) {
460
198
                                RETURN_IF_PUSH_DOWN(
461
198
                                        _normalize_topn_filter(context, expr, slot,
462
198
                                                               _slot_id_to_predicates[slot->id()],
463
198
                                                               &pdt),
464
198
                                        status);
465
198
                            } else {
466
198
                                RETURN_IF_PUSH_DOWN(_normalize_is_null_predicate(
467
198
                                                            context, expr, slot,
468
198
                                                            _slot_id_to_predicates[slot->id()],
469
198
                                                            value_range, &pdt),
470
198
                                                    status);
471
198
                            }
472
198
                            break;
473
198
                        case TExprNodeType::BLOOM_PRED:
474
198
                            RETURN_IF_PUSH_DOWN(_normalize_bloom_filter(
475
198
                                                        context, root, slot,
476
198
                                                        _slot_id_to_predicates[slot->id()], &pdt),
477
198
                                                status);
478
198
                            break;
479
198
                        default:
480
198
                            break;
481
198
                        }
482
198
                    }
483
                    // `node_type` of function filter is FUNCTION_CALL or COMPOUND_PRED
484
198
                    if (state()->enable_function_pushdown()) {
485
198
                        RETURN_IF_PUSH_DOWN(_normalize_function_filters(context, slot, &pdt),
486
198
                                            status);
487
198
                    }
488
198
                },
489
198
                *range);
490
198
        RETURN_IF_ERROR(status);
491
198
    }
492
206
    if (pdt == PushDownType::ACCEPTABLE && slotref != nullptr &&
493
206
        slotref->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
494
        // remaining it in the expr tree, in order to filter by function if the pushdown
495
        // predicate is not applied
496
0
        output_expr = expr_root; // remaining in conjunct tree
497
0
        return Status::OK();
498
0
    }
499
500
206
    if (pdt == PushDownType::ACCEPTABLE && _is_key_column(slot->col_name())) {
501
192
        output_expr = nullptr;
502
192
        return Status::OK();
503
192
    } else {
504
        // for PARTIAL_ACCEPTABLE and UNACCEPTABLE, do not remove expr from the tree
505
14
        output_expr = root;
506
14
        return Status::OK();
507
14
    }
508
0
    output_expr = root;
509
0
    return Status::OK();
510
206
}
511
512
Status ScanLocalStateBase::_normalize_bloom_filter(
513
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
514
0
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, PushDownType* pdt) {
515
0
    std::shared_ptr<ColumnPredicate> pred = nullptr;
516
0
    Defer defer = [&]() {
517
0
        if (pred) {
518
0
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
519
0
            predicates.emplace_back(pred);
520
0
        } else {
521
            // If exception occurs during processing, do not push down
522
0
            *pdt = PushDownType::UNACCEPTABLE;
523
0
        }
524
0
    };
525
0
    DCHECK(TExprNodeType::BLOOM_PRED == root->node_type());
526
0
    auto expr = root->is_rf_wrapper() ? root->get_impl() : root;
527
0
    DCHECK(expr->get_num_children() == 1);
528
0
    DCHECK(root->is_rf_wrapper());
529
0
    *pdt = _should_push_down_bloom_filter();
530
0
    if (*pdt != PushDownType::UNACCEPTABLE) {
531
0
        pred = create_bloom_filter_predicate(
532
0
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
533
0
                slot->type()->get_primitive_type() == TYPE_VARIANT ? expr->get_child(0)->data_type()
534
0
                                                                   : slot->type(),
535
0
                expr->get_bloom_filter_func());
536
0
    }
537
0
    return Status::OK();
538
0
}
539
540
Status ScanLocalStateBase::_normalize_topn_filter(
541
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
542
0
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, PushDownType* pdt) {
543
0
    std::shared_ptr<ColumnPredicate> pred = nullptr;
544
0
    Defer defer = [&]() {
545
0
        if (pred) {
546
0
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
547
0
            predicates.emplace_back(pred);
548
0
        } else {
549
            // If exception occurs during processing, do not push down
550
0
            *pdt = PushDownType::UNACCEPTABLE;
551
0
        }
552
0
    };
553
0
    DCHECK(root->is_topn_filter());
554
0
    *pdt = _should_push_down_topn_filter();
555
0
    if (*pdt != PushDownType::UNACCEPTABLE) {
556
0
        auto& tmp = _state->get_query_ctx()->get_runtime_predicate(
557
0
                assert_cast<VTopNPred*>(root.get())->source_node_id());
558
0
        if (_push_down_topn(tmp)) {
559
0
            pred = tmp.get_predicate(_parent->node_id());
560
0
        }
561
0
    }
562
0
    return Status::OK();
563
0
}
564
565
Status ScanLocalStateBase::_normalize_function_filters(VExprContext* expr_ctx, SlotDescriptor* slot,
566
0
                                                       PushDownType* pdt) {
567
0
    auto expr = expr_ctx->root()->is_rf_wrapper() ? expr_ctx->root()->get_impl() : expr_ctx->root();
568
0
    bool opposite = false;
569
0
    VExpr* fn_expr = expr.get();
570
0
    if (TExprNodeType::COMPOUND_PRED == expr->node_type() &&
571
0
        expr->fn().name.function_name == "not") {
572
0
        fn_expr = fn_expr->children()[0].get();
573
0
        opposite = true;
574
0
    }
575
576
0
    if (fn_expr->is_like_expr()) {
577
0
        doris::FunctionContext* fn_ctx = nullptr;
578
0
        StringRef val;
579
0
        PushDownType temp_pdt;
580
0
        RETURN_IF_ERROR(_should_push_down_function_filter(assert_cast<VectorizedFnCall*>(fn_expr),
581
0
                                                          expr_ctx, &val, &fn_ctx, temp_pdt));
582
0
        if (temp_pdt != PushDownType::UNACCEPTABLE) {
583
0
            std::string col = slot->col_name();
584
0
            _push_down_functions.emplace_back(opposite, col, fn_ctx, val);
585
0
            *pdt = temp_pdt;
586
0
        }
587
0
    }
588
0
    return Status::OK();
589
0
}
590
591
// only one level cast expr could push down for variant type
592
// check if expr is cast and it's children is slot
593
0
static bool is_valid_push_down_cast(const VExprSPtrs& children) {
594
0
    auto slot_expr = VExpr::expr_without_cast(children[0]);
595
0
    return slot_expr->data_type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT &&
596
0
           children[0]->node_type() == TExprNodeType::CAST_EXPR &&
597
0
           children[0]->children().at(0)->is_slot_ref();
598
0
}
599
600
template <typename Derived>
601
bool ScanLocalState<Derived>::_is_predicate_acting_on_slot(const VExprSPtrs& children,
602
                                                           SlotDescriptor** slot_desc,
603
206
                                                           ColumnValueRangeType** range) {
604
    // children[0] must be slot ref or cast(slot(variant) as type)
605
206
    if (children.empty() || (children[0]->node_type() != TExprNodeType::SLOT_REF &&
606
202
                             !is_valid_push_down_cast(children))) {
607
        // not a slot ref(column)
608
4
        return false;
609
4
    }
610
202
    std::shared_ptr<VSlotRef> slot_ref =
611
202
            std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(children[0]));
612
202
    *slot_desc =
613
202
            _parent->cast<typename Derived::Parent>()._slot_id_to_slot_desc[slot_ref->slot_id()];
614
202
    auto entry = _slot_id_to_predicates.find(slot_ref->slot_id());
615
202
    if (_slot_id_to_predicates.end() == entry) {
616
4
        return false;
617
4
    }
618
198
    auto sid_to_range = _slot_id_to_value_range.find(slot_ref->slot_id());
619
198
    if (_slot_id_to_value_range.end() == sid_to_range) {
620
0
        return false;
621
0
    }
622
198
    if (!_parent->cast<typename Derived::Parent>().can_push_down_column_predicate(*slot_desc)) {
623
0
        return false;
624
0
    }
625
198
    *range = &(sid_to_range->second);
626
198
    return true;
627
198
}
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_42EEENSF_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_42EEENSF_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_42EEENSF_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_42EEENSF_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_42EEENSF_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_42EEENSF_ILSG_20EEENSF_ILSG_2EEENSF_ILSG_28EEENSF_ILSG_29EEENSF_ILSG_30EEENSF_ILSG_35EEEEE
Line
Count
Source
603
206
                                                           ColumnValueRangeType** range) {
604
    // children[0] must be slot ref or cast(slot(variant) as type)
605
206
    if (children.empty() || (children[0]->node_type() != TExprNodeType::SLOT_REF &&
606
202
                             !is_valid_push_down_cast(children))) {
607
        // not a slot ref(column)
608
4
        return false;
609
4
    }
610
202
    std::shared_ptr<VSlotRef> slot_ref =
611
202
            std::dynamic_pointer_cast<VSlotRef>(VExpr::expr_without_cast(children[0]));
612
202
    *slot_desc =
613
202
            _parent->cast<typename Derived::Parent>()._slot_id_to_slot_desc[slot_ref->slot_id()];
614
202
    auto entry = _slot_id_to_predicates.find(slot_ref->slot_id());
615
202
    if (_slot_id_to_predicates.end() == entry) {
616
4
        return false;
617
4
    }
618
198
    auto sid_to_range = _slot_id_to_value_range.find(slot_ref->slot_id());
619
198
    if (_slot_id_to_value_range.end() == sid_to_range) {
620
0
        return false;
621
0
    }
622
198
    if (!_parent->cast<typename Derived::Parent>().can_push_down_column_predicate(*slot_desc)) {
623
0
        return false;
624
0
    }
625
198
    *range = &(sid_to_range->second);
626
198
    return true;
627
198
}
628
629
template <typename Derived>
630
0
std::string ScanLocalState<Derived>::debug_string(int indentation_level) const {
631
0
    fmt::memory_buffer debug_string_buffer;
632
0
    fmt::format_to(debug_string_buffer, "{}, _eos = {} , _opened = {}",
633
0
                   PipelineXLocalState<>::debug_string(indentation_level), _eos.load(),
634
0
                   _opened.load());
635
0
    if (auto ctx = _scanner_ctx.load()) {
636
0
        fmt::format_to(debug_string_buffer, "");
637
0
        fmt::format_to(debug_string_buffer, ", Scanner Context: {}", ctx->debug_string());
638
0
    } else {
639
0
        fmt::format_to(debug_string_buffer, "");
640
0
        fmt::format_to(debug_string_buffer, ", Scanner Context: NULL");
641
0
    }
642
643
0
    return fmt::to_string(debug_string_buffer);
644
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
645
646
210
Status ScanLocalStateBase::_eval_const_conjuncts(VExprContext* expr_ctx, PushDownType* pdt) {
647
210
    auto vexpr =
648
210
            expr_ctx->root()->is_rf_wrapper() ? expr_ctx->root()->get_impl() : expr_ctx->root();
649
    // Used to handle constant expressions, such as '1 = 1' _eval_const_conjuncts does not handle cases like 'colA = 1'
650
210
    const char* constant_val = nullptr;
651
210
    if (vexpr->is_constant()) {
652
6
        std::shared_ptr<ColumnPtrWrapper> const_col_wrapper;
653
6
        RETURN_IF_ERROR(vexpr->get_const_col(expr_ctx, &const_col_wrapper));
654
6
        if (const auto* const_column =
655
6
                    check_and_get_column<ColumnConst>(const_col_wrapper->column_ptr.get())) {
656
2
            constant_val = const_column->get_data_at(0).data;
657
2
            if (constant_val == nullptr || !*reinterpret_cast<const bool*>(constant_val)) {
658
2
                *pdt = PushDownType::ACCEPTABLE;
659
2
                _eos = true;
660
2
                _scan_dependency->set_ready();
661
2
            }
662
4
        } else if (const auto* bool_column =
663
4
                           check_and_get_column<ColumnUInt8>(const_col_wrapper->column_ptr.get())) {
664
            // TODO: If `vexpr->is_constant()` is true, a const column is expected here.
665
            //  But now we still don't cover all predicates for const expression.
666
            //  For example, for query `SELECT col FROM tbl WHERE 'PROMOTION' LIKE 'AAA%'`,
667
            //  predicate `like` will return a ColumnVector<UInt8> which contains a single value.
668
2
            LOG(WARNING) << "VExpr[" << vexpr->debug_string()
669
2
                         << "] should return a const column but actually is "
670
2
                         << const_col_wrapper->column_ptr->get_name();
671
2
            DCHECK_EQ(bool_column->size(), 1);
672
            /// TODO: There is a DCHECK here, but an additional check is still needed. It should return an error code.
673
2
            if (bool_column->size() == 1) {
674
2
                constant_val = bool_column->get_data_at(0).data;
675
2
                if (constant_val == nullptr || !*reinterpret_cast<const bool*>(constant_val)) {
676
2
                    *pdt = PushDownType::ACCEPTABLE;
677
2
                    _eos = true;
678
2
                    _scan_dependency->set_ready();
679
2
                }
680
2
            } else {
681
0
                LOG(WARNING) << "Constant predicate in scan node should return a bool column with "
682
0
                                "`size == 1` but actually is "
683
0
                             << bool_column->size();
684
0
            }
685
2
        } else {
686
2
            LOG(WARNING) << "VExpr[" << vexpr->debug_string()
687
2
                         << "] should return a const column but actually is "
688
2
                         << const_col_wrapper->column_ptr->get_name();
689
2
        }
690
6
    }
691
210
    return Status::OK();
692
210
}
693
694
template <PrimitiveType T>
695
Status ScanLocalStateBase::_normalize_in_predicate(
696
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
697
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
698
20
        PushDownType* pdt) {
699
20
    std::shared_ptr<ColumnPredicate> pred = nullptr;
700
20
    Defer defer = [&]() {
701
20
        if (pred) {
702
16
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
16
            predicates.emplace_back(pred);
704
16
        } else {
705
            // If exception occurs during processing, do not push down
706
4
            *pdt = PushDownType::UNACCEPTABLE;
707
4
        }
708
20
    };
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
700
12
    Defer defer = [&]() {
701
12
        if (pred) {
702
8
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
8
            predicates.emplace_back(pred);
704
8
        } else {
705
            // If exception occurs during processing, do not push down
706
4
            *pdt = PushDownType::UNACCEPTABLE;
707
4
        }
708
12
    };
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
700
4
    Defer defer = [&]() {
701
4
        if (pred) {
702
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
4
            predicates.emplace_back(pred);
704
4
        } else {
705
            // If exception occurs during processing, do not push down
706
0
            *pdt = PushDownType::UNACCEPTABLE;
707
0
        }
708
4
    };
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_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
700
4
    Defer defer = [&]() {
701
4
        if (pred) {
702
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
4
            predicates.emplace_back(pred);
704
4
        } else {
705
            // If exception occurs during processing, do not push down
706
0
            *pdt = PushDownType::UNACCEPTABLE;
707
0
        }
708
4
    };
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
709
710
20
    if (slot->get_virtual_column_expr() != nullptr) {
711
        // virtual column, do not push down
712
0
        return Status::OK();
713
0
    }
714
715
20
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
716
20
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
717
20
    *pdt = _should_push_down_in_predicate();
718
20
    if (*pdt == PushDownType::UNACCEPTABLE) {
719
0
        return Status::OK();
720
0
    }
721
20
    HybridSetBase::IteratorBase* iter = nullptr;
722
20
    auto hybrid_set = root->get_set_func();
723
724
20
    auto is_in = false;
725
20
    if (hybrid_set != nullptr) {
726
        // runtime filter produce VDirectInPredicate
727
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
728
0
            iter = hybrid_set->begin();
729
0
        }
730
0
        is_in = true;
731
20
    } else {
732
        // normal in predicate
733
20
        auto* tmp = assert_cast<VInPredicate*>(root.get());
734
735
        // begin to push InPredicate value into ColumnValueRange
736
20
        auto* state = reinterpret_cast<InState*>(
737
20
                expr_ctx->fn_context(tmp->fn_context_index())
738
20
                        ->get_function_state(FunctionContext::FRAGMENT_LOCAL));
739
740
        // xx in (col, xx, xx) should not be push down
741
20
        if (!state->use_set) {
742
2
            return Status::OK();
743
2
        }
744
18
        is_in = !tmp->is_not_in();
745
746
18
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
747
2
            _eos = true;
748
2
            _scan_dependency->set_ready();
749
2
            return Status::OK();
750
2
        }
751
16
        hybrid_set = state->hybrid_set;
752
16
        iter = state->hybrid_set->begin();
753
16
    }
754
755
16
    if (iter) {
756
16
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
757
16
                slot->is_nullable(), range.precision(), range.scale());
758
16
        auto& temp_range = is_in ? empty_range : range;
759
16
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
760
16
                        : (range.is_fixed_value_range()
761
8
                                   ? ColumnValueRange<T>::remove_fixed_value_range
762
8
                                   : ColumnValueRange<T>::empty_function);
763
92
        while (iter->has_next()) {
764
            // column in (nullptr) is always false so continue to
765
            // dispose next item
766
76
            DCHECK(iter->get_value() != nullptr);
767
76
            const auto* value = iter->get_value();
768
76
            if constexpr (is_string_type(T)) {
769
0
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
770
0
                RETURN_IF_ERROR(_change_value_range(
771
0
                        is_in, temp_range,
772
0
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
773
0
                        is_in ? "in" : "not_in"));
774
76
            } else {
775
76
                RETURN_IF_ERROR(_change_value_range(
776
76
                        is_in, temp_range,
777
76
                        Field::create_field<T>(
778
76
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
779
76
                                        value)),
780
76
                        fn, is_in ? "in" : "not_in"));
781
76
            }
782
76
            iter->next();
783
76
        }
784
16
        if (is_in) {
785
8
            range.intersection(temp_range);
786
8
        }
787
16
    }
788
16
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
789
8
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
790
8
                           slot->col_name(),
791
8
                           slot->type()->get_primitive_type() == TYPE_VARIANT
792
8
                                   ? root->get_child(0)->data_type()
793
8
                                   : slot->type(),
794
8
                           hybrid_set, false)
795
16
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
796
8
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
797
8
                           slot->col_name(),
798
8
                           slot->type()->get_primitive_type() == TYPE_VARIANT
799
8
                                   ? root->get_child(0)->data_type()
800
8
                                   : slot->type(),
801
8
                           hybrid_set, false);
802
16
    return Status::OK();
803
20
}
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
698
12
        PushDownType* pdt) {
699
12
    std::shared_ptr<ColumnPredicate> pred = nullptr;
700
12
    Defer defer = [&]() {
701
12
        if (pred) {
702
12
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
12
            predicates.emplace_back(pred);
704
12
        } else {
705
            // If exception occurs during processing, do not push down
706
12
            *pdt = PushDownType::UNACCEPTABLE;
707
12
        }
708
12
    };
709
710
12
    if (slot->get_virtual_column_expr() != nullptr) {
711
        // virtual column, do not push down
712
0
        return Status::OK();
713
0
    }
714
715
12
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
716
12
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
717
12
    *pdt = _should_push_down_in_predicate();
718
12
    if (*pdt == PushDownType::UNACCEPTABLE) {
719
0
        return Status::OK();
720
0
    }
721
12
    HybridSetBase::IteratorBase* iter = nullptr;
722
12
    auto hybrid_set = root->get_set_func();
723
724
12
    auto is_in = false;
725
12
    if (hybrid_set != nullptr) {
726
        // runtime filter produce VDirectInPredicate
727
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
728
0
            iter = hybrid_set->begin();
729
0
        }
730
0
        is_in = true;
731
12
    } else {
732
        // normal in predicate
733
12
        auto* tmp = assert_cast<VInPredicate*>(root.get());
734
735
        // begin to push InPredicate value into ColumnValueRange
736
12
        auto* state = reinterpret_cast<InState*>(
737
12
                expr_ctx->fn_context(tmp->fn_context_index())
738
12
                        ->get_function_state(FunctionContext::FRAGMENT_LOCAL));
739
740
        // xx in (col, xx, xx) should not be push down
741
12
        if (!state->use_set) {
742
2
            return Status::OK();
743
2
        }
744
10
        is_in = !tmp->is_not_in();
745
746
10
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
747
2
            _eos = true;
748
2
            _scan_dependency->set_ready();
749
2
            return Status::OK();
750
2
        }
751
8
        hybrid_set = state->hybrid_set;
752
8
        iter = state->hybrid_set->begin();
753
8
    }
754
755
8
    if (iter) {
756
8
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
757
8
                slot->is_nullable(), range.precision(), range.scale());
758
8
        auto& temp_range = is_in ? empty_range : range;
759
8
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
760
8
                        : (range.is_fixed_value_range()
761
4
                                   ? ColumnValueRange<T>::remove_fixed_value_range
762
4
                                   : ColumnValueRange<T>::empty_function);
763
32
        while (iter->has_next()) {
764
            // column in (nullptr) is always false so continue to
765
            // dispose next item
766
24
            DCHECK(iter->get_value() != nullptr);
767
24
            const auto* value = iter->get_value();
768
            if constexpr (is_string_type(T)) {
769
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
770
                RETURN_IF_ERROR(_change_value_range(
771
                        is_in, temp_range,
772
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
773
                        is_in ? "in" : "not_in"));
774
24
            } else {
775
24
                RETURN_IF_ERROR(_change_value_range(
776
24
                        is_in, temp_range,
777
24
                        Field::create_field<T>(
778
24
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
779
24
                                        value)),
780
24
                        fn, is_in ? "in" : "not_in"));
781
24
            }
782
24
            iter->next();
783
24
        }
784
8
        if (is_in) {
785
4
            range.intersection(temp_range);
786
4
        }
787
8
    }
788
8
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
789
4
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
790
4
                           slot->col_name(),
791
4
                           slot->type()->get_primitive_type() == TYPE_VARIANT
792
4
                                   ? root->get_child(0)->data_type()
793
4
                                   : slot->type(),
794
4
                           hybrid_set, false)
795
8
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
796
4
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
797
4
                           slot->col_name(),
798
4
                           slot->type()->get_primitive_type() == TYPE_VARIANT
799
4
                                   ? root->get_child(0)->data_type()
800
4
                                   : slot->type(),
801
4
                           hybrid_set, false);
802
8
    return Status::OK();
803
12
}
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
698
4
        PushDownType* pdt) {
699
4
    std::shared_ptr<ColumnPredicate> pred = nullptr;
700
4
    Defer defer = [&]() {
701
4
        if (pred) {
702
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
4
            predicates.emplace_back(pred);
704
4
        } else {
705
            // If exception occurs during processing, do not push down
706
4
            *pdt = PushDownType::UNACCEPTABLE;
707
4
        }
708
4
    };
709
710
4
    if (slot->get_virtual_column_expr() != nullptr) {
711
        // virtual column, do not push down
712
0
        return Status::OK();
713
0
    }
714
715
4
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
716
4
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
717
4
    *pdt = _should_push_down_in_predicate();
718
4
    if (*pdt == PushDownType::UNACCEPTABLE) {
719
0
        return Status::OK();
720
0
    }
721
4
    HybridSetBase::IteratorBase* iter = nullptr;
722
4
    auto hybrid_set = root->get_set_func();
723
724
4
    auto is_in = false;
725
4
    if (hybrid_set != nullptr) {
726
        // runtime filter produce VDirectInPredicate
727
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
728
0
            iter = hybrid_set->begin();
729
0
        }
730
0
        is_in = true;
731
4
    } else {
732
        // normal in predicate
733
4
        auto* tmp = assert_cast<VInPredicate*>(root.get());
734
735
        // begin to push InPredicate value into ColumnValueRange
736
4
        auto* state = reinterpret_cast<InState*>(
737
4
                expr_ctx->fn_context(tmp->fn_context_index())
738
4
                        ->get_function_state(FunctionContext::FRAGMENT_LOCAL));
739
740
        // xx in (col, xx, xx) should not be push down
741
4
        if (!state->use_set) {
742
0
            return Status::OK();
743
0
        }
744
4
        is_in = !tmp->is_not_in();
745
746
4
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
747
0
            _eos = true;
748
0
            _scan_dependency->set_ready();
749
0
            return Status::OK();
750
0
        }
751
4
        hybrid_set = state->hybrid_set;
752
4
        iter = state->hybrid_set->begin();
753
4
    }
754
755
4
    if (iter) {
756
4
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
757
4
                slot->is_nullable(), range.precision(), range.scale());
758
4
        auto& temp_range = is_in ? empty_range : range;
759
4
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
760
4
                        : (range.is_fixed_value_range()
761
2
                                   ? ColumnValueRange<T>::remove_fixed_value_range
762
2
                                   : ColumnValueRange<T>::empty_function);
763
44
        while (iter->has_next()) {
764
            // column in (nullptr) is always false so continue to
765
            // dispose next item
766
40
            DCHECK(iter->get_value() != nullptr);
767
40
            const auto* value = iter->get_value();
768
            if constexpr (is_string_type(T)) {
769
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
770
                RETURN_IF_ERROR(_change_value_range(
771
                        is_in, temp_range,
772
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
773
                        is_in ? "in" : "not_in"));
774
40
            } else {
775
40
                RETURN_IF_ERROR(_change_value_range(
776
40
                        is_in, temp_range,
777
40
                        Field::create_field<T>(
778
40
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
779
40
                                        value)),
780
40
                        fn, is_in ? "in" : "not_in"));
781
40
            }
782
40
            iter->next();
783
40
        }
784
4
        if (is_in) {
785
2
            range.intersection(temp_range);
786
2
        }
787
4
    }
788
4
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
789
2
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
790
2
                           slot->col_name(),
791
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
792
2
                                   ? root->get_child(0)->data_type()
793
2
                                   : slot->type(),
794
2
                           hybrid_set, false)
795
4
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
796
2
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
797
2
                           slot->col_name(),
798
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
799
2
                                   ? root->get_child(0)->data_type()
800
2
                                   : slot->type(),
801
2
                           hybrid_set, false);
802
4
    return Status::OK();
803
4
}
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_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
698
4
        PushDownType* pdt) {
699
4
    std::shared_ptr<ColumnPredicate> pred = nullptr;
700
4
    Defer defer = [&]() {
701
4
        if (pred) {
702
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
703
4
            predicates.emplace_back(pred);
704
4
        } else {
705
            // If exception occurs during processing, do not push down
706
4
            *pdt = PushDownType::UNACCEPTABLE;
707
4
        }
708
4
    };
709
710
4
    if (slot->get_virtual_column_expr() != nullptr) {
711
        // virtual column, do not push down
712
0
        return Status::OK();
713
0
    }
714
715
4
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
716
4
    DCHECK(TExprNodeType::IN_PRED == root->node_type()) << root->debug_string();
717
4
    *pdt = _should_push_down_in_predicate();
718
4
    if (*pdt == PushDownType::UNACCEPTABLE) {
719
0
        return Status::OK();
720
0
    }
721
4
    HybridSetBase::IteratorBase* iter = nullptr;
722
4
    auto hybrid_set = root->get_set_func();
723
724
4
    auto is_in = false;
725
4
    if (hybrid_set != nullptr) {
726
        // runtime filter produce VDirectInPredicate
727
0
        if (hybrid_set->size() <= static_cast<size_t>(_max_pushdown_conditions_per_column)) {
728
0
            iter = hybrid_set->begin();
729
0
        }
730
0
        is_in = true;
731
4
    } else {
732
        // normal in predicate
733
4
        auto* tmp = assert_cast<VInPredicate*>(root.get());
734
735
        // begin to push InPredicate value into ColumnValueRange
736
4
        auto* state = reinterpret_cast<InState*>(
737
4
                expr_ctx->fn_context(tmp->fn_context_index())
738
4
                        ->get_function_state(FunctionContext::FRAGMENT_LOCAL));
739
740
        // xx in (col, xx, xx) should not be push down
741
4
        if (!state->use_set) {
742
0
            return Status::OK();
743
0
        }
744
4
        is_in = !tmp->is_not_in();
745
746
4
        if (state->hybrid_set->contain_null() && tmp->is_not_in()) {
747
0
            _eos = true;
748
0
            _scan_dependency->set_ready();
749
0
            return Status::OK();
750
0
        }
751
4
        hybrid_set = state->hybrid_set;
752
4
        iter = state->hybrid_set->begin();
753
4
    }
754
755
4
    if (iter) {
756
4
        auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
757
4
                slot->is_nullable(), range.precision(), range.scale());
758
4
        auto& temp_range = is_in ? empty_range : range;
759
4
        auto fn = is_in ? ColumnValueRange<T>::add_fixed_value_range
760
4
                        : (range.is_fixed_value_range()
761
2
                                   ? ColumnValueRange<T>::remove_fixed_value_range
762
2
                                   : ColumnValueRange<T>::empty_function);
763
16
        while (iter->has_next()) {
764
            // column in (nullptr) is always false so continue to
765
            // dispose next item
766
12
            DCHECK(iter->get_value() != nullptr);
767
12
            const auto* value = iter->get_value();
768
            if constexpr (is_string_type(T)) {
769
                const auto* str_value = reinterpret_cast<const StringRef*>(value);
770
                RETURN_IF_ERROR(_change_value_range(
771
                        is_in, temp_range,
772
                        Field::create_field<T>(std::string(str_value->data, str_value->size)), fn,
773
                        is_in ? "in" : "not_in"));
774
12
            } else {
775
12
                RETURN_IF_ERROR(_change_value_range(
776
12
                        is_in, temp_range,
777
12
                        Field::create_field<T>(
778
12
                                *reinterpret_cast<const typename PrimitiveTypeTraits<T>::CppType*>(
779
12
                                        value)),
780
12
                        fn, is_in ? "in" : "not_in"));
781
12
            }
782
12
            iter->next();
783
12
        }
784
4
        if (is_in) {
785
2
            range.intersection(temp_range);
786
2
        }
787
4
    }
788
4
    pred = is_in ? create_in_list_predicate<PredicateType::IN_LIST>(
789
2
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
790
2
                           slot->col_name(),
791
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
792
2
                                   ? root->get_child(0)->data_type()
793
2
                                   : slot->type(),
794
2
                           hybrid_set, false)
795
4
                 : create_in_list_predicate<PredicateType::NOT_IN_LIST>(
796
2
                           _parent->intermediate_row_desc().get_column_id(slot->id()),
797
2
                           slot->col_name(),
798
2
                           slot->type()->get_primitive_type() == TYPE_VARIANT
799
2
                                   ? root->get_child(0)->data_type()
800
2
                                   : slot->type(),
801
2
                           hybrid_set, false);
802
4
    return Status::OK();
803
4
}
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
804
805
template <PrimitiveType T>
806
Status ScanLocalStateBase::_normalize_binary_predicate(
807
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
808
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
809
170
        PushDownType* pdt) {
810
170
    std::shared_ptr<ColumnPredicate> pred = nullptr;
811
170
    Defer defer = [&]() {
812
170
        if (pred) {
813
168
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
168
            predicates.emplace_back(pred);
815
168
        } else {
816
            // If exception occurs during processing, do not push down
817
2
            *pdt = PushDownType::UNACCEPTABLE;
818
2
        }
819
170
    };
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
811
14
    Defer defer = [&]() {
812
14
        if (pred) {
813
12
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
12
            predicates.emplace_back(pred);
815
12
        } else {
816
            // If exception occurs during processing, do not push down
817
2
            *pdt = PushDownType::UNACCEPTABLE;
818
2
        }
819
14
    };
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
811
120
    Defer defer = [&]() {
812
120
        if (pred) {
813
120
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
120
            predicates.emplace_back(pred);
815
120
        } else {
816
            // If exception occurs during processing, do not push down
817
0
            *pdt = PushDownType::UNACCEPTABLE;
818
0
        }
819
120
    };
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
_ZZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
811
36
    Defer defer = [&]() {
812
36
        if (pred) {
813
36
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
36
            predicates.emplace_back(pred);
815
36
        } else {
816
            // If exception occurs during processing, do not push down
817
0
            *pdt = PushDownType::UNACCEPTABLE;
818
0
        }
819
36
    };
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
820
821
170
    if (slot->get_virtual_column_expr() != nullptr) {
822
        // virtual column, do not push down
823
0
        return Status::OK();
824
0
    }
825
826
170
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
827
170
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
828
170
    DCHECK(root->get_num_children() == 2);
829
170
    Field value;
830
170
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
831
170
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
832
170
    if (*pdt == PushDownType::UNACCEPTABLE) {
833
0
        return Status::OK();
834
0
    }
835
170
    const std::string& function_name =
836
170
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
837
170
    auto op = to_olap_filter_type(function_name);
838
170
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
839
170
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
840
170
            slot->is_nullable(), range.precision(), range.scale());
841
170
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
842
170
    if (value.get_type() != TYPE_NULL) {
843
168
        switch (op) {
844
32
        case SQLFilterOp::FILTER_EQ:
845
32
            pred = create_comparison_predicate<PredicateType::EQ>(
846
32
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
847
32
                    slot->type()->get_primitive_type() == TYPE_VARIANT
848
32
                            ? root->get_child(0)->data_type()
849
32
                            : slot->type(),
850
32
                    value, false);
851
32
            break;
852
28
        case SQLFilterOp::FILTER_NE:
853
28
            pred = create_comparison_predicate<PredicateType::NE>(
854
28
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
855
28
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
28
                            ? root->get_child(0)->data_type()
857
28
                            : slot->type(),
858
28
                    value, false);
859
28
            break;
860
26
        case SQLFilterOp::FILTER_LESS:
861
26
            pred = create_comparison_predicate<PredicateType::LT>(
862
26
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
863
26
                    slot->type()->get_primitive_type() == TYPE_VARIANT
864
26
                            ? root->get_child(0)->data_type()
865
26
                            : slot->type(),
866
26
                    value, false);
867
26
            break;
868
26
        case SQLFilterOp::FILTER_LARGER:
869
26
            pred = create_comparison_predicate<PredicateType::GT>(
870
26
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
871
26
                    slot->type()->get_primitive_type() == TYPE_VARIANT
872
26
                            ? root->get_child(0)->data_type()
873
26
                            : slot->type(),
874
26
                    value, false);
875
26
            break;
876
28
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
877
28
            pred = create_comparison_predicate<PredicateType::LE>(
878
28
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
879
28
                    slot->type()->get_primitive_type() == TYPE_VARIANT
880
28
                            ? root->get_child(0)->data_type()
881
28
                            : slot->type(),
882
28
                    value, false);
883
28
            break;
884
28
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
885
28
            pred = create_comparison_predicate<PredicateType::GE>(
886
28
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
887
28
                    slot->type()->get_primitive_type() == TYPE_VARIANT
888
28
                            ? root->get_child(0)->data_type()
889
28
                            : slot->type(),
890
28
                    value, false);
891
28
            break;
892
0
        default:
893
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
894
168
        }
895
896
168
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
897
168
                  : op == SQLFilterOp::FILTER_NE
898
136
                          ? (range.is_fixed_value_range()
899
28
                                     ? ColumnValueRange<T>::remove_fixed_value_range
900
28
                                     : ColumnValueRange<T>::empty_function)
901
136
                          : ColumnValueRange<T>::add_value_range;
902
168
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
903
168
        if (op == SQLFilterOp::FILTER_EQ) {
904
32
            range.intersection(temp_range);
905
32
        }
906
168
    } else {
907
2
        *pdt = PushDownType::UNACCEPTABLE;
908
2
        _eos = true;
909
2
        _scan_dependency->set_ready();
910
2
    }
911
912
170
    return Status::OK();
913
170
}
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
809
14
        PushDownType* pdt) {
810
14
    std::shared_ptr<ColumnPredicate> pred = nullptr;
811
14
    Defer defer = [&]() {
812
14
        if (pred) {
813
14
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
14
            predicates.emplace_back(pred);
815
14
        } else {
816
            // If exception occurs during processing, do not push down
817
14
            *pdt = PushDownType::UNACCEPTABLE;
818
14
        }
819
14
    };
820
821
14
    if (slot->get_virtual_column_expr() != nullptr) {
822
        // virtual column, do not push down
823
0
        return Status::OK();
824
0
    }
825
826
14
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
827
14
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
828
14
    DCHECK(root->get_num_children() == 2);
829
14
    Field value;
830
14
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
831
14
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
832
14
    if (*pdt == PushDownType::UNACCEPTABLE) {
833
0
        return Status::OK();
834
0
    }
835
14
    const std::string& function_name =
836
14
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
837
14
    auto op = to_olap_filter_type(function_name);
838
14
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
839
14
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
840
14
            slot->is_nullable(), range.precision(), range.scale());
841
14
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
842
14
    if (value.get_type() != TYPE_NULL) {
843
12
        switch (op) {
844
6
        case SQLFilterOp::FILTER_EQ:
845
6
            pred = create_comparison_predicate<PredicateType::EQ>(
846
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
847
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
848
6
                            ? root->get_child(0)->data_type()
849
6
                            : slot->type(),
850
6
                    value, false);
851
6
            break;
852
2
        case SQLFilterOp::FILTER_NE:
853
2
            pred = create_comparison_predicate<PredicateType::NE>(
854
2
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
855
2
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
2
                            ? root->get_child(0)->data_type()
857
2
                            : slot->type(),
858
2
                    value, false);
859
2
            break;
860
0
        case SQLFilterOp::FILTER_LESS:
861
0
            pred = create_comparison_predicate<PredicateType::LT>(
862
0
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
863
0
                    slot->type()->get_primitive_type() == TYPE_VARIANT
864
0
                            ? root->get_child(0)->data_type()
865
0
                            : slot->type(),
866
0
                    value, false);
867
0
            break;
868
0
        case SQLFilterOp::FILTER_LARGER:
869
0
            pred = create_comparison_predicate<PredicateType::GT>(
870
0
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
871
0
                    slot->type()->get_primitive_type() == TYPE_VARIANT
872
0
                            ? root->get_child(0)->data_type()
873
0
                            : slot->type(),
874
0
                    value, false);
875
0
            break;
876
2
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
877
2
            pred = create_comparison_predicate<PredicateType::LE>(
878
2
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
879
2
                    slot->type()->get_primitive_type() == TYPE_VARIANT
880
2
                            ? root->get_child(0)->data_type()
881
2
                            : slot->type(),
882
2
                    value, false);
883
2
            break;
884
2
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
885
2
            pred = create_comparison_predicate<PredicateType::GE>(
886
2
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
887
2
                    slot->type()->get_primitive_type() == TYPE_VARIANT
888
2
                            ? root->get_child(0)->data_type()
889
2
                            : slot->type(),
890
2
                    value, false);
891
2
            break;
892
0
        default:
893
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
894
12
        }
895
896
12
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
897
12
                  : op == SQLFilterOp::FILTER_NE
898
6
                          ? (range.is_fixed_value_range()
899
2
                                     ? ColumnValueRange<T>::remove_fixed_value_range
900
2
                                     : ColumnValueRange<T>::empty_function)
901
6
                          : ColumnValueRange<T>::add_value_range;
902
12
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
903
12
        if (op == SQLFilterOp::FILTER_EQ) {
904
6
            range.intersection(temp_range);
905
6
        }
906
12
    } else {
907
2
        *pdt = PushDownType::UNACCEPTABLE;
908
2
        _eos = true;
909
2
        _scan_dependency->set_ready();
910
2
    }
911
912
14
    return Status::OK();
913
14
}
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
809
120
        PushDownType* pdt) {
810
120
    std::shared_ptr<ColumnPredicate> pred = nullptr;
811
120
    Defer defer = [&]() {
812
120
        if (pred) {
813
120
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
120
            predicates.emplace_back(pred);
815
120
        } else {
816
            // If exception occurs during processing, do not push down
817
120
            *pdt = PushDownType::UNACCEPTABLE;
818
120
        }
819
120
    };
820
821
120
    if (slot->get_virtual_column_expr() != nullptr) {
822
        // virtual column, do not push down
823
0
        return Status::OK();
824
0
    }
825
826
120
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
827
120
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
828
120
    DCHECK(root->get_num_children() == 2);
829
120
    Field value;
830
120
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
831
120
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
832
120
    if (*pdt == PushDownType::UNACCEPTABLE) {
833
0
        return Status::OK();
834
0
    }
835
120
    const std::string& function_name =
836
120
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
837
120
    auto op = to_olap_filter_type(function_name);
838
120
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
839
120
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
840
120
            slot->is_nullable(), range.precision(), range.scale());
841
120
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
842
120
    if (value.get_type() != TYPE_NULL) {
843
120
        switch (op) {
844
20
        case SQLFilterOp::FILTER_EQ:
845
20
            pred = create_comparison_predicate<PredicateType::EQ>(
846
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
847
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
848
20
                            ? root->get_child(0)->data_type()
849
20
                            : slot->type(),
850
20
                    value, false);
851
20
            break;
852
20
        case SQLFilterOp::FILTER_NE:
853
20
            pred = create_comparison_predicate<PredicateType::NE>(
854
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
855
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
20
                            ? root->get_child(0)->data_type()
857
20
                            : slot->type(),
858
20
                    value, false);
859
20
            break;
860
20
        case SQLFilterOp::FILTER_LESS:
861
20
            pred = create_comparison_predicate<PredicateType::LT>(
862
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
863
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
864
20
                            ? root->get_child(0)->data_type()
865
20
                            : slot->type(),
866
20
                    value, false);
867
20
            break;
868
20
        case SQLFilterOp::FILTER_LARGER:
869
20
            pred = create_comparison_predicate<PredicateType::GT>(
870
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
871
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
872
20
                            ? root->get_child(0)->data_type()
873
20
                            : slot->type(),
874
20
                    value, false);
875
20
            break;
876
20
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
877
20
            pred = create_comparison_predicate<PredicateType::LE>(
878
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
879
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
880
20
                            ? root->get_child(0)->data_type()
881
20
                            : slot->type(),
882
20
                    value, false);
883
20
            break;
884
20
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
885
20
            pred = create_comparison_predicate<PredicateType::GE>(
886
20
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
887
20
                    slot->type()->get_primitive_type() == TYPE_VARIANT
888
20
                            ? root->get_child(0)->data_type()
889
20
                            : slot->type(),
890
20
                    value, false);
891
20
            break;
892
0
        default:
893
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
894
120
        }
895
896
120
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
897
120
                  : op == SQLFilterOp::FILTER_NE
898
100
                          ? (range.is_fixed_value_range()
899
20
                                     ? ColumnValueRange<T>::remove_fixed_value_range
900
20
                                     : ColumnValueRange<T>::empty_function)
901
100
                          : ColumnValueRange<T>::add_value_range;
902
120
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
903
120
        if (op == SQLFilterOp::FILTER_EQ) {
904
20
            range.intersection(temp_range);
905
20
        }
906
120
    } else {
907
0
        *pdt = PushDownType::UNACCEPTABLE;
908
0
        _eos = true;
909
0
        _scan_dependency->set_ready();
910
0
    }
911
912
120
    return Status::OK();
913
120
}
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
_ZN5doris18ScanLocalStateBase27_normalize_binary_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
809
36
        PushDownType* pdt) {
810
36
    std::shared_ptr<ColumnPredicate> pred = nullptr;
811
36
    Defer defer = [&]() {
812
36
        if (pred) {
813
36
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
814
36
            predicates.emplace_back(pred);
815
36
        } else {
816
            // If exception occurs during processing, do not push down
817
36
            *pdt = PushDownType::UNACCEPTABLE;
818
36
        }
819
36
    };
820
821
36
    if (slot->get_virtual_column_expr() != nullptr) {
822
        // virtual column, do not push down
823
0
        return Status::OK();
824
0
    }
825
826
36
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
827
36
    DCHECK(TExprNodeType::BINARY_PRED == root->node_type()) << root->debug_string();
828
36
    DCHECK(root->get_num_children() == 2);
829
36
    Field value;
830
36
    *pdt = _should_push_down_binary_predicate(assert_cast<VectorizedFnCall*>(root.get()), expr_ctx,
831
36
                                              value, {"eq", "ne", "lt", "gt", "le", "ge"});
832
36
    if (*pdt == PushDownType::UNACCEPTABLE) {
833
0
        return Status::OK();
834
0
    }
835
36
    const std::string& function_name =
836
36
            assert_cast<VectorizedFnCall*>(root.get())->fn().name.function_name;
837
36
    auto op = to_olap_filter_type(function_name);
838
36
    auto is_equal_op = op == SQLFilterOp::FILTER_EQ || op == SQLFilterOp::FILTER_NE;
839
36
    auto empty_range = ColumnValueRange<T>::create_empty_column_value_range(
840
36
            slot->is_nullable(), range.precision(), range.scale());
841
36
    auto& temp_range = op == SQLFilterOp::FILTER_EQ ? empty_range : range;
842
36
    if (value.get_type() != TYPE_NULL) {
843
36
        switch (op) {
844
6
        case SQLFilterOp::FILTER_EQ:
845
6
            pred = create_comparison_predicate<PredicateType::EQ>(
846
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
847
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
848
6
                            ? root->get_child(0)->data_type()
849
6
                            : slot->type(),
850
6
                    value, false);
851
6
            break;
852
6
        case SQLFilterOp::FILTER_NE:
853
6
            pred = create_comparison_predicate<PredicateType::NE>(
854
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
855
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
856
6
                            ? root->get_child(0)->data_type()
857
6
                            : slot->type(),
858
6
                    value, false);
859
6
            break;
860
6
        case SQLFilterOp::FILTER_LESS:
861
6
            pred = create_comparison_predicate<PredicateType::LT>(
862
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
863
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
864
6
                            ? root->get_child(0)->data_type()
865
6
                            : slot->type(),
866
6
                    value, false);
867
6
            break;
868
6
        case SQLFilterOp::FILTER_LARGER:
869
6
            pred = create_comparison_predicate<PredicateType::GT>(
870
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
871
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
872
6
                            ? root->get_child(0)->data_type()
873
6
                            : slot->type(),
874
6
                    value, false);
875
6
            break;
876
6
        case SQLFilterOp::FILTER_LESS_OR_EQUAL:
877
6
            pred = create_comparison_predicate<PredicateType::LE>(
878
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
879
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
880
6
                            ? root->get_child(0)->data_type()
881
6
                            : slot->type(),
882
6
                    value, false);
883
6
            break;
884
6
        case SQLFilterOp::FILTER_LARGER_OR_EQUAL:
885
6
            pred = create_comparison_predicate<PredicateType::GE>(
886
6
                    _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(),
887
6
                    slot->type()->get_primitive_type() == TYPE_VARIANT
888
6
                            ? root->get_child(0)->data_type()
889
6
                            : slot->type(),
890
6
                    value, false);
891
6
            break;
892
0
        default:
893
0
            throw Exception(Status::InternalError("Unsupported function name: {}", function_name));
894
36
        }
895
896
36
        auto fn = op == SQLFilterOp::FILTER_EQ ? ColumnValueRange<T>::add_fixed_value_range
897
36
                  : op == SQLFilterOp::FILTER_NE
898
30
                          ? (range.is_fixed_value_range()
899
6
                                     ? ColumnValueRange<T>::remove_fixed_value_range
900
6
                                     : ColumnValueRange<T>::empty_function)
901
30
                          : ColumnValueRange<T>::add_value_range;
902
36
        RETURN_IF_ERROR(_change_value_range(is_equal_op, temp_range, value, fn, function_name));
903
36
        if (op == SQLFilterOp::FILTER_EQ) {
904
6
            range.intersection(temp_range);
905
6
        }
906
36
    } else {
907
0
        *pdt = PushDownType::UNACCEPTABLE;
908
0
        _eos = true;
909
0
        _scan_dependency->set_ready();
910
0
    }
911
912
36
    return Status::OK();
913
36
}
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
914
915
template <PrimitiveType PrimitiveType, typename ChangeFixedValueRangeFunc>
916
Status ScanLocalStateBase::_change_value_range(bool is_equal_op,
917
                                               ColumnValueRange<PrimitiveType>& temp_range,
918
                                               const Field& value,
919
                                               const ChangeFixedValueRangeFunc& func,
920
244
                                               const std::string& fn_name) {
921
244
    if constexpr (PrimitiveType == TYPE_DATE) {
922
0
        auto tmp_value = value.template get<TYPE_DATE>();
923
0
        if (is_equal_op) {
924
0
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
925
0
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
926
0
            }
927
0
        } else {
928
0
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
929
0
                if (fn_name == "lt" || fn_name == "ge") {
930
0
                    ++tmp_value;
931
0
                }
932
0
            }
933
0
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
934
0
        }
935
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
936
                         (PrimitiveType == TYPE_TINYINT) || (PrimitiveType == TYPE_SMALLINT) ||
937
                         (PrimitiveType == TYPE_INT) || (PrimitiveType == TYPE_BIGINT) ||
938
                         (PrimitiveType == TYPE_LARGEINT) || (PrimitiveType == TYPE_FLOAT) ||
939
                         (PrimitiveType == TYPE_DOUBLE) || (PrimitiveType == TYPE_IPV4) ||
940
                         (PrimitiveType == TYPE_IPV6) || (PrimitiveType == TYPE_DECIMAL32) ||
941
                         (PrimitiveType == TYPE_DECIMAL64) || (PrimitiveType == TYPE_DECIMAL128I) ||
942
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
943
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
944
244
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType)) {
945
244
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
946
    } else {
947
        static_assert(always_false_v<PrimitiveType>);
948
    }
949
244
    return Status::OK();
950
244
}
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
920
36
                                               const std::string& fn_name) {
921
    if constexpr (PrimitiveType == TYPE_DATE) {
922
        auto tmp_value = value.template get<TYPE_DATE>();
923
        if (is_equal_op) {
924
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
925
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
926
            }
927
        } else {
928
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
929
                if (fn_name == "lt" || fn_name == "ge") {
930
                    ++tmp_value;
931
                }
932
            }
933
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
934
        }
935
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
936
                         (PrimitiveType == TYPE_TINYINT) || (PrimitiveType == TYPE_SMALLINT) ||
937
                         (PrimitiveType == TYPE_INT) || (PrimitiveType == TYPE_BIGINT) ||
938
                         (PrimitiveType == TYPE_LARGEINT) || (PrimitiveType == TYPE_FLOAT) ||
939
                         (PrimitiveType == TYPE_DOUBLE) || (PrimitiveType == TYPE_IPV4) ||
940
                         (PrimitiveType == TYPE_IPV6) || (PrimitiveType == TYPE_DECIMAL32) ||
941
                         (PrimitiveType == TYPE_DECIMAL64) || (PrimitiveType == TYPE_DECIMAL128I) ||
942
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
943
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
944
36
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType)) {
945
36
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
946
    } else {
947
        static_assert(always_false_v<PrimitiveType>);
948
    }
949
36
    return Status::OK();
950
36
}
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
920
160
                                               const std::string& fn_name) {
921
    if constexpr (PrimitiveType == TYPE_DATE) {
922
        auto tmp_value = value.template get<TYPE_DATE>();
923
        if (is_equal_op) {
924
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
925
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
926
            }
927
        } else {
928
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
929
                if (fn_name == "lt" || fn_name == "ge") {
930
                    ++tmp_value;
931
                }
932
            }
933
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
934
        }
935
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
936
                         (PrimitiveType == TYPE_TINYINT) || (PrimitiveType == TYPE_SMALLINT) ||
937
                         (PrimitiveType == TYPE_INT) || (PrimitiveType == TYPE_BIGINT) ||
938
                         (PrimitiveType == TYPE_LARGEINT) || (PrimitiveType == TYPE_FLOAT) ||
939
                         (PrimitiveType == TYPE_DOUBLE) || (PrimitiveType == TYPE_IPV4) ||
940
                         (PrimitiveType == TYPE_IPV6) || (PrimitiveType == TYPE_DECIMAL32) ||
941
                         (PrimitiveType == TYPE_DECIMAL64) || (PrimitiveType == TYPE_DECIMAL128I) ||
942
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
943
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
944
160
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType)) {
945
160
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
946
    } else {
947
        static_assert(always_false_v<PrimitiveType>);
948
    }
949
160
    return Status::OK();
950
160
}
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_13PrimitiveTypeE42EPFvRNS_16ColumnValueRangeILS2_42EEENS_11SQLFilterOpERKNS_16TimestampTzValueEEEENS_6StatusEbRNS3_IXT_EEERKNS_5FieldERKT0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
Line
Count
Source
920
48
                                               const std::string& fn_name) {
921
    if constexpr (PrimitiveType == TYPE_DATE) {
922
        auto tmp_value = value.template get<TYPE_DATE>();
923
        if (is_equal_op) {
924
            if (!tmp_value.check_loss_accuracy_cast_to_date()) {
925
                func(temp_range, to_olap_filter_type(fn_name), tmp_value);
926
            }
927
        } else {
928
            if (tmp_value.check_loss_accuracy_cast_to_date()) {
929
                if (fn_name == "lt" || fn_name == "ge") {
930
                    ++tmp_value;
931
                }
932
            }
933
            func(temp_range, to_olap_filter_type(fn_name), tmp_value);
934
        }
935
    } else if constexpr ((PrimitiveType == TYPE_DECIMALV2) || (PrimitiveType == TYPE_DATETIMEV2) ||
936
                         (PrimitiveType == TYPE_TINYINT) || (PrimitiveType == TYPE_SMALLINT) ||
937
                         (PrimitiveType == TYPE_INT) || (PrimitiveType == TYPE_BIGINT) ||
938
                         (PrimitiveType == TYPE_LARGEINT) || (PrimitiveType == TYPE_FLOAT) ||
939
                         (PrimitiveType == TYPE_DOUBLE) || (PrimitiveType == TYPE_IPV4) ||
940
                         (PrimitiveType == TYPE_IPV6) || (PrimitiveType == TYPE_DECIMAL32) ||
941
                         (PrimitiveType == TYPE_DECIMAL64) || (PrimitiveType == TYPE_DECIMAL128I) ||
942
                         (PrimitiveType == TYPE_DECIMAL256) || (PrimitiveType == TYPE_BOOLEAN) ||
943
                         (PrimitiveType == TYPE_DATEV2) || (PrimitiveType == TYPE_TIMESTAMPTZ) ||
944
48
                         (PrimitiveType == TYPE_DATETIME) || is_string_type(PrimitiveType)) {
945
48
        func(temp_range, to_olap_filter_type(fn_name), value.template get<PrimitiveType>());
946
    } else {
947
        static_assert(always_false_v<PrimitiveType>);
948
    }
949
48
    return Status::OK();
950
48
}
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
951
952
template <PrimitiveType T>
953
Status ScanLocalStateBase::_normalize_is_null_predicate(
954
        VExprContext* expr_ctx, const VExprSPtr& root, SlotDescriptor* slot,
955
        std::vector<std::shared_ptr<ColumnPredicate>>& predicates, ColumnValueRange<T>& range,
956
8
        PushDownType* pdt) {
957
8
    std::shared_ptr<ColumnPredicate> pred = nullptr;
958
8
    Defer defer = [&]() {
959
8
        if (pred) {
960
8
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
8
            predicates.emplace_back(pred);
962
8
        } else {
963
            // If exception occurs during processing, do not push down
964
0
            *pdt = PushDownType::UNACCEPTABLE;
965
0
        }
966
8
    };
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
958
4
    Defer defer = [&]() {
959
4
        if (pred) {
960
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
4
            predicates.emplace_back(pred);
962
4
        } else {
963
            // If exception occurs during processing, do not push down
964
0
            *pdt = PushDownType::UNACCEPTABLE;
965
0
        }
966
4
    };
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
958
2
    Defer defer = [&]() {
959
2
        if (pred) {
960
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
2
            predicates.emplace_back(pred);
962
2
        } else {
963
            // If exception occurs during processing, do not push down
964
0
            *pdt = PushDownType::UNACCEPTABLE;
965
0
        }
966
2
    };
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
_ZZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeEENKUlvE_clEv
Line
Count
Source
958
2
    Defer defer = [&]() {
959
2
        if (pred) {
960
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
2
            predicates.emplace_back(pred);
962
2
        } else {
963
            // If exception occurs during processing, do not push down
964
0
            *pdt = PushDownType::UNACCEPTABLE;
965
0
        }
966
2
    };
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
967
8
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
968
8
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
969
8
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
970
8
        *pdt = _should_push_down_is_null_predicate(fn_call);
971
8
    } else {
972
0
        *pdt = PushDownType::UNACCEPTABLE;
973
0
    }
974
975
8
    if (*pdt == PushDownType::UNACCEPTABLE) {
976
0
        return Status::OK();
977
0
    }
978
979
8
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
980
8
    if (fn_call->fn().name.function_name == "is_null_pred") {
981
2
        pred = NullPredicate::create_shared(
982
2
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), true,
983
2
                T);
984
2
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
985
2
                slot->is_nullable(), range.precision(), range.scale());
986
2
        temp_range.set_contain_null(true);
987
2
        range.intersection(temp_range);
988
6
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
989
6
        pred = NullPredicate::create_shared(
990
6
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), false,
991
6
                T);
992
6
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
993
6
                slot->is_nullable(), range.precision(), range.scale());
994
6
        temp_range.set_contain_null(false);
995
6
        range.intersection(temp_range);
996
6
    }
997
8
    return Status::OK();
998
8
}
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
956
4
        PushDownType* pdt) {
957
4
    std::shared_ptr<ColumnPredicate> pred = nullptr;
958
4
    Defer defer = [&]() {
959
4
        if (pred) {
960
4
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
4
            predicates.emplace_back(pred);
962
4
        } else {
963
            // If exception occurs during processing, do not push down
964
4
            *pdt = PushDownType::UNACCEPTABLE;
965
4
        }
966
4
    };
967
4
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
968
4
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
969
4
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
970
4
        *pdt = _should_push_down_is_null_predicate(fn_call);
971
4
    } else {
972
0
        *pdt = PushDownType::UNACCEPTABLE;
973
0
    }
974
975
4
    if (*pdt == PushDownType::UNACCEPTABLE) {
976
0
        return Status::OK();
977
0
    }
978
979
4
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
980
4
    if (fn_call->fn().name.function_name == "is_null_pred") {
981
2
        pred = NullPredicate::create_shared(
982
2
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), true,
983
2
                T);
984
2
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
985
2
                slot->is_nullable(), range.precision(), range.scale());
986
2
        temp_range.set_contain_null(true);
987
2
        range.intersection(temp_range);
988
2
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
989
2
        pred = NullPredicate::create_shared(
990
2
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), false,
991
2
                T);
992
2
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
993
2
                slot->is_nullable(), range.precision(), range.scale());
994
2
        temp_range.set_contain_null(false);
995
2
        range.intersection(temp_range);
996
2
    }
997
4
    return Status::OK();
998
4
}
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
956
2
        PushDownType* pdt) {
957
2
    std::shared_ptr<ColumnPredicate> pred = nullptr;
958
2
    Defer defer = [&]() {
959
2
        if (pred) {
960
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
2
            predicates.emplace_back(pred);
962
2
        } else {
963
            // If exception occurs during processing, do not push down
964
2
            *pdt = PushDownType::UNACCEPTABLE;
965
2
        }
966
2
    };
967
2
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
968
2
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
969
2
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
970
2
        *pdt = _should_push_down_is_null_predicate(fn_call);
971
2
    } else {
972
0
        *pdt = PushDownType::UNACCEPTABLE;
973
0
    }
974
975
2
    if (*pdt == PushDownType::UNACCEPTABLE) {
976
0
        return Status::OK();
977
0
    }
978
979
2
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
980
2
    if (fn_call->fn().name.function_name == "is_null_pred") {
981
0
        pred = NullPredicate::create_shared(
982
0
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), true,
983
0
                T);
984
0
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
985
0
                slot->is_nullable(), range.precision(), range.scale());
986
0
        temp_range.set_contain_null(true);
987
0
        range.intersection(temp_range);
988
2
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
989
2
        pred = NullPredicate::create_shared(
990
2
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), false,
991
2
                T);
992
2
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
993
2
                slot->is_nullable(), range.precision(), range.scale());
994
2
        temp_range.set_contain_null(false);
995
2
        range.intersection(temp_range);
996
2
    }
997
2
    return Status::OK();
998
2
}
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
_ZN5doris18ScanLocalStateBase28_normalize_is_null_predicateILNS_13PrimitiveTypeE42EEENS_6StatusEPNS_12VExprContextERKSt10shared_ptrINS_5VExprEEPNS_14SlotDescriptorERSt6vectorIS6_INS_15ColumnPredicateEESaISF_EERNS_16ColumnValueRangeIXT_EEEPNS_12PushDownTypeE
Line
Count
Source
956
2
        PushDownType* pdt) {
957
2
    std::shared_ptr<ColumnPredicate> pred = nullptr;
958
2
    Defer defer = [&]() {
959
2
        if (pred) {
960
2
            DCHECK(*pdt != PushDownType::UNACCEPTABLE) << root->debug_string();
961
2
            predicates.emplace_back(pred);
962
2
        } else {
963
            // If exception occurs during processing, do not push down
964
2
            *pdt = PushDownType::UNACCEPTABLE;
965
2
        }
966
2
    };
967
2
    DCHECK(!root->is_rf_wrapper()) << root->debug_string();
968
2
    DCHECK(TExprNodeType::FUNCTION_CALL == root->node_type()) << root->debug_string();
969
2
    if (auto fn_call = dynamic_cast<VectorizedFnCall*>(root.get())) {
970
2
        *pdt = _should_push_down_is_null_predicate(fn_call);
971
2
    } else {
972
0
        *pdt = PushDownType::UNACCEPTABLE;
973
0
    }
974
975
2
    if (*pdt == PushDownType::UNACCEPTABLE) {
976
0
        return Status::OK();
977
0
    }
978
979
2
    auto fn_call = assert_cast<VectorizedFnCall*>(root.get());
980
2
    if (fn_call->fn().name.function_name == "is_null_pred") {
981
0
        pred = NullPredicate::create_shared(
982
0
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), true,
983
0
                T);
984
0
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
985
0
                slot->is_nullable(), range.precision(), range.scale());
986
0
        temp_range.set_contain_null(true);
987
0
        range.intersection(temp_range);
988
2
    } else if (fn_call->fn().name.function_name == "is_not_null_pred") {
989
2
        pred = NullPredicate::create_shared(
990
2
                _parent->intermediate_row_desc().get_column_id(slot->id()), slot->col_name(), false,
991
2
                T);
992
2
        auto temp_range = ColumnValueRange<T>::create_empty_column_value_range(
993
2
                slot->is_nullable(), range.precision(), range.scale());
994
2
        temp_range.set_contain_null(false);
995
2
        range.intersection(temp_range);
996
2
    }
997
2
    return Status::OK();
998
2
}
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
999
1000
template <typename Derived>
1001
0
Status ScanLocalState<Derived>::_prepare_scanners() {
1002
0
    std::list<ScannerSPtr> scanners;
1003
0
    RETURN_IF_ERROR(_init_scanners(&scanners));
1004
    // Init scanner wrapper
1005
0
    for (auto it = scanners.begin(); it != scanners.end(); ++it) {
1006
0
        _scanners.emplace_back(std::make_shared<ScannerDelegate>(*it));
1007
0
    }
1008
0
    if (scanners.empty()) {
1009
0
        _eos = true;
1010
0
        _scan_dependency->set_always_ready();
1011
0
    } else {
1012
0
        COUNTER_SET(_num_scanners, static_cast<int64_t>(scanners.size()));
1013
0
        RETURN_IF_ERROR(_start_scanners(_scanners));
1014
0
    }
1015
0
    return Status::OK();
1016
0
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE17_prepare_scannersEv
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
1017
1018
template <typename Derived>
1019
Status ScanLocalState<Derived>::_start_scanners(
1020
0
        const std::list<std::shared_ptr<ScannerDelegate>>& scanners) {
1021
0
    auto& p = _parent->cast<typename Derived::Parent>();
1022
0
    _scanner_ctx.store(ScannerContext::create_shared(
1023
0
            state(), this, p._output_tuple_desc, p.output_row_descriptor(), scanners, p.limit(),
1024
0
            _scan_dependency, &p._shared_scan_limit, p._mem_arb, p._mem_limiter, _instance_idx,
1025
0
            _state->get_query_ctx()->get_query_options().__isset.enable_adaptive_scan &&
1026
0
                    _state->get_query_ctx()->get_query_options().enable_adaptive_scan
1027
0
#ifdef BE_TEST
1028
0
            ,
1029
0
            max_scanners_concurrency(state())
1030
0
#endif
1031
0
                    ));
1032
0
    return Status::OK();
1033
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
1034
1035
template <typename Derived>
1036
0
const TupleDescriptor* ScanLocalState<Derived>::input_tuple_desc() const {
1037
0
    return _parent->cast<typename Derived::Parent>()._input_tuple_desc;
1038
0
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE16input_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE16input_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE16input_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE16input_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE16input_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE16input_tuple_descEv
1039
template <typename Derived>
1040
38
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1041
38
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1042
38
}
_ZNK5doris14ScanLocalStateINS_18OlapScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1040
30
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1041
30
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1042
30
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18JDBCScanLocalStateEE17output_tuple_descEv
_ZNK5doris14ScanLocalStateINS_18FileScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1040
4
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1041
4
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1042
4
}
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_18MetaScanLocalStateEE17output_tuple_descEv
Unexecuted instantiation: _ZNK5doris14ScanLocalStateINS_21GroupCommitLocalStateEE17output_tuple_descEv
_ZNK5doris14ScanLocalStateINS_18MockScanLocalStateEE17output_tuple_descEv
Line
Count
Source
1040
4
const TupleDescriptor* ScanLocalState<Derived>::output_tuple_desc() const {
1041
4
    return _parent->cast<typename Derived::Parent>()._output_tuple_desc;
1042
4
}
1043
1044
template <typename Derived>
1045
2
TPushAggOp::type ScanLocalState<Derived>::get_push_down_agg_type() {
1046
2
    return _parent->cast<typename Derived::Parent>()._push_down_agg_type;
1047
2
}
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
1045
2
TPushAggOp::type ScanLocalState<Derived>::get_push_down_agg_type() {
1046
2
    return _parent->cast<typename Derived::Parent>()._push_down_agg_type;
1047
2
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE22get_push_down_agg_typeEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE22get_push_down_agg_typeEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE22get_push_down_agg_typeEv
1048
1049
template <typename Derived>
1050
const std::optional<std::vector<int32_t>>& ScanLocalState<Derived>::get_push_down_count_slot_ids()
1051
2
        const {
1052
2
    return _parent->cast<typename Derived::Parent>()._push_down_count_slot_ids;
1053
2
}
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
1051
2
        const {
1052
2
    return _parent->cast<typename Derived::Parent>()._push_down_count_slot_ids;
1053
2
}
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
1054
1055
template <typename Derived>
1056
0
int64_t ScanLocalState<Derived>::limit_per_scanner() {
1057
0
    return _parent->cast<typename Derived::Parent>()._limit_per_scanner;
1058
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
1059
1060
template <typename Derived>
1061
8
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1062
8
    auto* p = &_parent->cast<typename Derived::Parent>()._shared_scan_limit;
1063
    // -1 means "no SQL LIMIT" — return nullptr so callers naturally skip
1064
    // all limit logic.
1065
8
    return p->load(std::memory_order_relaxed) < 0 ? nullptr : p;
1066
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE21shared_scan_limit_ptrEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE21shared_scan_limit_ptrEv
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE21shared_scan_limit_ptrEv
Line
Count
Source
1061
4
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1062
4
    auto* p = &_parent->cast<typename Derived::Parent>()._shared_scan_limit;
1063
    // -1 means "no SQL LIMIT" — return nullptr so callers naturally skip
1064
    // all limit logic.
1065
4
    return p->load(std::memory_order_relaxed) < 0 ? nullptr : p;
1066
4
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE21shared_scan_limit_ptrEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE21shared_scan_limit_ptrEv
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE21shared_scan_limit_ptrEv
Line
Count
Source
1061
4
std::atomic<int64_t>* ScanLocalState<Derived>::shared_scan_limit_ptr() {
1062
4
    auto* p = &_parent->cast<typename Derived::Parent>()._shared_scan_limit;
1063
    // -1 means "no SQL LIMIT" — return nullptr so callers naturally skip
1064
    // all limit logic.
1065
4
    return p->load(std::memory_order_relaxed) < 0 ? nullptr : p;
1066
4
}
1067
1068
template <typename Derived>
1069
10
Status ScanLocalState<Derived>::_init_profile() {
1070
    // 1. counters for scan node
1071
10
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1072
10
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1073
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1074
1075
    // 2. counters for scanners
1076
10
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1077
10
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1078
1079
10
    _newly_create_free_blocks_num =
1080
10
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1081
10
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1082
10
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1083
10
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1084
1085
    // time of scan thread to wait for worker thread of the thread pool
1086
10
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1087
1088
10
    _max_scan_concurrency =
1089
10
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1090
10
    _min_scan_concurrency =
1091
10
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1092
1093
10
    _peak_running_scanner =
1094
10
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1095
1096
10
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1097
10
    _condition_cache_filtered_rows_counter =
1098
10
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1099
1100
10
    _partitions_pruned_by_rf_counter =
1101
10
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1102
10
    _total_partitions_rf_counter =
1103
10
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1104
1105
    // Rows read from storage.
1106
    // Include the rows read from doris page cache.
1107
10
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1108
    // Size of data that read from storage.
1109
    // Does not include rows that are cached by doris page cache.
1110
10
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1111
10
    return Status::OK();
1112
10
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE13_init_profileEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE13_init_profileEv
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE13_init_profileEv
Line
Count
Source
1069
8
Status ScanLocalState<Derived>::_init_profile() {
1070
    // 1. counters for scan node
1071
8
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1072
8
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1073
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1074
1075
    // 2. counters for scanners
1076
8
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1077
8
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1078
1079
8
    _newly_create_free_blocks_num =
1080
8
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1081
8
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1082
8
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1083
8
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1084
1085
    // time of scan thread to wait for worker thread of the thread pool
1086
8
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1087
1088
8
    _max_scan_concurrency =
1089
8
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1090
8
    _min_scan_concurrency =
1091
8
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1092
1093
8
    _peak_running_scanner =
1094
8
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1095
1096
8
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1097
8
    _condition_cache_filtered_rows_counter =
1098
8
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1099
1100
8
    _partitions_pruned_by_rf_counter =
1101
8
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1102
8
    _total_partitions_rf_counter =
1103
8
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1104
1105
    // Rows read from storage.
1106
    // Include the rows read from doris page cache.
1107
8
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1108
    // Size of data that read from storage.
1109
    // Does not include rows that are cached by doris page cache.
1110
8
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1111
8
    return Status::OK();
1112
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE13_init_profileEv
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE13_init_profileEv
_ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE13_init_profileEv
Line
Count
Source
1069
2
Status ScanLocalState<Derived>::_init_profile() {
1070
    // 1. counters for scan node
1071
2
    _rows_read_counter = ADD_COUNTER(custom_profile(), profile::ROWS_READ, TUnit::UNIT);
1072
2
    _num_scanners = ADD_COUNTER(custom_profile(), profile::NUM_SCANNERS, TUnit::UNIT);
1073
    //custom_profile()->AddHighWaterMarkCounter("PeakMemoryUsage", TUnit::BYTES);
1074
1075
    // 2. counters for scanners
1076
2
    _scanner_profile.reset(new RuntimeProfile(profile::SCANNER));
1077
2
    custom_profile()->add_child(_scanner_profile.get(), true, nullptr);
1078
1079
2
    _newly_create_free_blocks_num =
1080
2
            ADD_COUNTER(_scanner_profile, profile::NEWLY_CREATE_FREE_BLOCKS_NUM, TUnit::UNIT);
1081
2
    _scan_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_GET_BLOCK_TIME);
1082
2
    _scan_cpu_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_CPU_TIME);
1083
2
    _filter_timer = ADD_TIMER(_scanner_profile, profile::SCANNER_FILTER_TIME);
1084
1085
    // time of scan thread to wait for worker thread of the thread pool
1086
2
    _scanner_wait_worker_timer = ADD_TIMER(custom_profile(), profile::SCANNER_WORKER_WAIT_TIME);
1087
1088
2
    _max_scan_concurrency =
1089
2
            ADD_COUNTER(custom_profile(), profile::MAX_SCAN_CONCURRENCY, TUnit::UNIT);
1090
2
    _min_scan_concurrency =
1091
2
            ADD_COUNTER(custom_profile(), profile::MIN_SCAN_CONCURRENCY, TUnit::UNIT);
1092
1093
2
    _peak_running_scanner =
1094
2
            _scanner_profile->AddHighWaterMarkCounter(profile::RUNNING_SCANNER, TUnit::UNIT);
1095
1096
2
    _condition_cache_hit_counter = ADD_COUNTER(_scanner_profile, "ConditionCacheHit", TUnit::UNIT);
1097
2
    _condition_cache_filtered_rows_counter =
1098
2
            ADD_COUNTER(_scanner_profile, "ConditionCacheFilteredRows", TUnit::UNIT);
1099
1100
2
    _partitions_pruned_by_rf_counter =
1101
2
            ADD_COUNTER(custom_profile(), "PartitionsPrunedByRuntimeFilter", TUnit::UNIT);
1102
2
    _total_partitions_rf_counter =
1103
2
            ADD_COUNTER(custom_profile(), "TotalPartitionsForRFPruning", TUnit::UNIT);
1104
1105
    // Rows read from storage.
1106
    // Include the rows read from doris page cache.
1107
2
    _scan_rows = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_ROWS, TUnit::UNIT, 1);
1108
    // Size of data that read from storage.
1109
    // Does not include rows that are cached by doris page cache.
1110
2
    _scan_bytes = ADD_COUNTER_WITH_LEVEL(custom_profile(), profile::SCAN_BYTES, TUnit::BYTES, 1);
1111
2
    return Status::OK();
1112
2
}
1113
1114
template <typename Derived>
1115
0
Status ScanLocalState<Derived>::_get_topn_filters(RuntimeState* state) {
1116
0
    auto& p = _parent->cast<typename Derived::Parent>();
1117
0
    std::stringstream result;
1118
0
    std::copy(p._topn_filter_source_node_ids.begin(), p._topn_filter_source_node_ids.end(),
1119
0
              std::ostream_iterator<int>(result, ","));
1120
0
    custom_profile()->add_info_string("TopNFilterSourceNodeIds", result.str());
1121
1122
0
    for (auto id : get_topn_filter_source_node_ids(state, false)) {
1123
0
        const auto& pred = state->get_query_ctx()->get_runtime_predicate(id);
1124
0
        VExprSPtr topn_pred;
1125
0
        RETURN_IF_ERROR(VTopNPred::create_vtopn_pred(pred.get_texpr(p.node_id()), id, topn_pred));
1126
1127
0
        VExprContextSPtr conjunct = VExprContext::create_shared(topn_pred);
1128
0
        RETURN_IF_ERROR(conjunct->prepare(
1129
0
                state, _parent->cast<typename Derived::Parent>().row_descriptor()));
1130
0
        RETURN_IF_ERROR(conjunct->open(state));
1131
0
        _conjuncts.emplace_back(conjunct);
1132
0
    }
1133
0
    for (auto id : get_topn_filter_source_node_ids(state, true)) {
1134
0
        const auto& pred = state->get_query_ctx()->get_runtime_predicate(id);
1135
0
        VExprSPtr topn_pred;
1136
0
        RETURN_IF_ERROR(VTopNPred::create_vtopn_pred(pred.get_texpr(p.node_id()), id, topn_pred));
1137
1138
0
        VExprContextSPtr conjunct = VExprContext::create_shared(topn_pred);
1139
0
        RETURN_IF_ERROR(conjunct->prepare(
1140
0
                state, _parent->cast<typename Derived::Parent>().row_descriptor()));
1141
0
        RETURN_IF_ERROR(conjunct->open(state));
1142
0
        _conjuncts.emplace_back(conjunct);
1143
0
    }
1144
0
    return Status::OK();
1145
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
1146
1147
template <typename Derived>
1148
void ScanLocalState<Derived>::_filter_and_collect_cast_type_for_variant(
1149
        const VExpr* expr,
1150
0
        std::unordered_map<std::string, std::vector<DataTypePtr>>& colname_to_cast_types) {
1151
0
    auto& p = _parent->cast<typename Derived::Parent>();
1152
0
    const auto* cast_expr = dynamic_cast<const VCastExpr*>(expr);
1153
0
    if (cast_expr != nullptr) {
1154
0
        const auto* src_slot =
1155
0
                cast_expr->get_child(0)->node_type() == TExprNodeType::SLOT_REF
1156
0
                        ? dynamic_cast<const VSlotRef*>(cast_expr->get_child(0).get())
1157
0
                        : nullptr;
1158
0
        if (src_slot == nullptr) {
1159
0
            return;
1160
0
        }
1161
0
        std::vector<SlotDescriptor*> slots = output_tuple_desc()->slots();
1162
0
        SlotDescriptor* src_slot_desc = p._slot_id_to_slot_desc[src_slot->slot_id()];
1163
0
        auto type_desc = cast_expr->get_target_type();
1164
0
        if (src_slot_desc->type()->get_primitive_type() == PrimitiveType::TYPE_VARIANT) {
1165
0
            colname_to_cast_types[src_slot_desc->col_name()].push_back(type_desc);
1166
0
        }
1167
0
    }
1168
0
    for (const auto& child : expr->children()) {
1169
0
        _filter_and_collect_cast_type_for_variant(child.get(), colname_to_cast_types);
1170
0
    }
1171
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
1172
1173
template <typename Derived>
1174
0
void ScanLocalState<Derived>::get_cast_types_for_variants() {
1175
0
    std::unordered_map<std::string, std::vector<DataTypePtr>> colname_to_cast_types;
1176
0
    for (auto it = _conjuncts.begin(); it != _conjuncts.end();) {
1177
0
        auto& conjunct = *it;
1178
0
        if (conjunct->root()) {
1179
0
            _filter_and_collect_cast_type_for_variant(conjunct->root().get(),
1180
0
                                                      colname_to_cast_types);
1181
0
        }
1182
0
        ++it;
1183
0
    }
1184
    // cast to one certain type for variant could utilize fully predicates performance
1185
    // when storage layer type equals to cast type
1186
0
    for (const auto& [slotid, types] : colname_to_cast_types) {
1187
0
        if (types.size() == 1) {
1188
0
            _cast_types_for_variants[slotid] = types[0];
1189
0
        }
1190
0
    }
1191
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
1192
1193
template <typename LocalStateType>
1194
ScanOperatorX<LocalStateType>::ScanOperatorX(ObjectPool* pool, const TPlanNode& tnode,
1195
                                             int operator_id, const DescriptorTbl& descs,
1196
                                             int parallel_tasks)
1197
42
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1198
42
          _runtime_filter_descs(tnode.runtime_filters),
1199
42
          _parallel_tasks(parallel_tasks) {
1200
42
    if (tnode.__isset.push_down_count) {
1201
0
        _push_down_count = tnode.push_down_count;
1202
0
    }
1203
42
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1204
42
}
_ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Line
Count
Source
1197
34
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1198
34
          _runtime_filter_descs(tnode.runtime_filters),
1199
34
          _parallel_tasks(parallel_tasks) {
1200
34
    if (tnode.__isset.push_down_count) {
1201
0
        _push_down_count = tnode.push_down_count;
1202
0
    }
1203
34
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1204
34
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Line
Count
Source
1197
8
        : OperatorX<LocalStateType>(pool, tnode, operator_id, descs),
1198
8
          _runtime_filter_descs(tnode.runtime_filters),
1199
8
          _parallel_tasks(parallel_tasks) {
1200
8
    if (tnode.__isset.push_down_count) {
1201
0
        _push_down_count = tnode.push_down_count;
1202
0
    }
1203
8
    _shared_scan_limit.store(this->_limit, std::memory_order_relaxed);
1204
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblEi
1205
1206
template <typename LocalStateType>
1207
16
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1208
16
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1209
1210
16
    const TQueryOptions& query_options = state->query_options();
1211
16
    if (query_options.__isset.max_scan_key_num) {
1212
0
        _max_scan_key_num = query_options.max_scan_key_num;
1213
0
    }
1214
16
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1215
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1216
0
    }
1217
16
#ifdef BE_TEST
1218
16
    _mem_arb = nullptr;
1219
#else
1220
    _mem_arb = state->get_query_ctx()->mem_arb();
1221
#endif
1222
16
    if (_mem_arb) {
1223
0
        _mem_arb->register_scan_node();
1224
0
        _mem_limiter =
1225
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1226
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1227
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1228
0
    }
1229
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1230
    // Introduced a new field : tnode.push_down_agg_type_opt
1231
    //
1232
    // make it compatible here
1233
16
    if (tnode.__isset.push_down_agg_type_opt) {
1234
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1235
16
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1236
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1237
16
    } else {
1238
16
        _push_down_agg_type = TPushAggOp::type::NONE;
1239
16
    }
1240
16
    if (tnode.__isset.push_down_count_slot_ids) {
1241
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1242
0
    }
1243
1244
16
    if (tnode.__isset.topn_filter_source_node_ids) {
1245
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1246
0
    }
1247
1248
    // Which means the request could be fullfilled in a single segment iterator request.
1249
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1250
    // now add some check for unique_table let running only one instance for select limit n.
1251
16
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1252
14
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1253
14
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1254
14
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1255
12
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1256
12
            if (tnode.limit > 0 &&
1257
12
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1258
2
                _should_run_serial = true;
1259
2
            }
1260
12
        }
1261
14
    }
1262
1263
16
    return Status::OK();
1264
16
}
_ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Line
Count
Source
1207
8
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1208
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1209
1210
8
    const TQueryOptions& query_options = state->query_options();
1211
8
    if (query_options.__isset.max_scan_key_num) {
1212
0
        _max_scan_key_num = query_options.max_scan_key_num;
1213
0
    }
1214
8
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1215
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1216
0
    }
1217
8
#ifdef BE_TEST
1218
8
    _mem_arb = nullptr;
1219
#else
1220
    _mem_arb = state->get_query_ctx()->mem_arb();
1221
#endif
1222
8
    if (_mem_arb) {
1223
0
        _mem_arb->register_scan_node();
1224
0
        _mem_limiter =
1225
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1226
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1227
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1228
0
    }
1229
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1230
    // Introduced a new field : tnode.push_down_agg_type_opt
1231
    //
1232
    // make it compatible here
1233
8
    if (tnode.__isset.push_down_agg_type_opt) {
1234
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1235
8
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1236
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1237
8
    } else {
1238
8
        _push_down_agg_type = TPushAggOp::type::NONE;
1239
8
    }
1240
8
    if (tnode.__isset.push_down_count_slot_ids) {
1241
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1242
0
    }
1243
1244
8
    if (tnode.__isset.topn_filter_source_node_ids) {
1245
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1246
0
    }
1247
1248
    // Which means the request could be fullfilled in a single segment iterator request.
1249
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1250
    // now add some check for unique_table let running only one instance for select limit n.
1251
8
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1252
6
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1253
6
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1254
6
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1255
4
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1256
4
            if (tnode.limit > 0 &&
1257
4
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1258
2
                _should_run_serial = true;
1259
2
            }
1260
4
        }
1261
6
    }
1262
1263
8
    return Status::OK();
1264
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Line
Count
Source
1207
8
Status ScanOperatorX<LocalStateType>::init(const TPlanNode& tnode, RuntimeState* state) {
1208
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::init(tnode, state));
1209
1210
8
    const TQueryOptions& query_options = state->query_options();
1211
8
    if (query_options.__isset.max_scan_key_num) {
1212
0
        _max_scan_key_num = query_options.max_scan_key_num;
1213
0
    }
1214
8
    if (query_options.__isset.max_pushdown_conditions_per_column) {
1215
0
        _max_pushdown_conditions_per_column = query_options.max_pushdown_conditions_per_column;
1216
0
    }
1217
8
#ifdef BE_TEST
1218
8
    _mem_arb = nullptr;
1219
#else
1220
    _mem_arb = state->get_query_ctx()->mem_arb();
1221
#endif
1222
8
    if (_mem_arb) {
1223
0
        _mem_arb->register_scan_node();
1224
0
        _mem_limiter =
1225
0
                MemLimiter::create_shared(state->query_id(), state->query_parallel_instance_num(),
1226
0
                                          OperatorX<LocalStateType>::is_serial_operator(),
1227
0
                                          state->get_query_ctx()->get_query_options().mem_limit);
1228
0
    }
1229
    // tnode.olap_scan_node.push_down_agg_type_opt field is deprecated
1230
    // Introduced a new field : tnode.push_down_agg_type_opt
1231
    //
1232
    // make it compatible here
1233
8
    if (tnode.__isset.push_down_agg_type_opt) {
1234
0
        _push_down_agg_type = tnode.push_down_agg_type_opt;
1235
8
    } else if (tnode.olap_scan_node.__isset.push_down_agg_type_opt) {
1236
0
        _push_down_agg_type = tnode.olap_scan_node.push_down_agg_type_opt;
1237
8
    } else {
1238
8
        _push_down_agg_type = TPushAggOp::type::NONE;
1239
8
    }
1240
8
    if (tnode.__isset.push_down_count_slot_ids) {
1241
0
        _push_down_count_slot_ids = tnode.push_down_count_slot_ids;
1242
0
    }
1243
1244
8
    if (tnode.__isset.topn_filter_source_node_ids) {
1245
0
        _topn_filter_source_node_ids = tnode.topn_filter_source_node_ids;
1246
0
    }
1247
1248
    // Which means the request could be fullfilled in a single segment iterator request.
1249
    // the unique_table has a condition of delete_sign = 0 awalys, so it's not have plan for one instance to scan table,
1250
    // now add some check for unique_table let running only one instance for select limit n.
1251
8
    if (query_options.enable_adaptive_pipeline_task_serial_read_on_limit) {
1252
8
        DCHECK(query_options.__isset.adaptive_pipeline_task_serial_read_on_limit);
1253
8
        if (!tnode.__isset.conjuncts || tnode.conjuncts.empty() ||
1254
8
            (tnode.conjuncts.size() == 1 && tnode.__isset.olap_scan_node &&
1255
8
             tnode.olap_scan_node.keyType == TKeysType::UNIQUE_KEYS)) {
1256
8
            if (tnode.limit > 0 &&
1257
8
                tnode.limit <= query_options.adaptive_pipeline_task_serial_read_on_limit) {
1258
0
                _should_run_serial = true;
1259
0
            }
1260
8
        }
1261
8
    }
1262
1263
8
    return Status::OK();
1264
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE4initERKNS_9TPlanNodeEPNS_12RuntimeStateE
1265
1266
template <typename LocalStateType>
1267
8
Status ScanOperatorX<LocalStateType>::prepare(RuntimeState* state) {
1268
8
    _input_tuple_desc = state->desc_tbl().get_tuple_descriptor(_input_tuple_id);
1269
8
    _output_tuple_desc = state->desc_tbl().get_tuple_descriptor(_output_tuple_id);
1270
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::prepare(state));
1271
1272
8
    const auto slots = _output_tuple_desc->slots();
1273
24
    for (auto* slot : slots) {
1274
24
        _colname_to_slot_id[slot->col_name()] = slot->id();
1275
24
        _slot_id_to_slot_desc[slot->id()] = slot;
1276
24
    }
1277
8
    for (auto id : _topn_filter_source_node_ids) {
1278
0
        int cid = -1;
1279
0
        if (state->get_query_ctx()->get_runtime_predicate(id).target_is_slot(node_id())) {
1280
0
            auto s = _slot_id_to_slot_desc[state->get_query_ctx()
1281
0
                                                   ->get_runtime_predicate(id)
1282
0
                                                   .get_texpr(node_id())
1283
0
                                                   .nodes[0]
1284
0
                                                   .slot_ref.slot_id];
1285
0
            DCHECK(s != nullptr);
1286
0
            if (can_push_down_column_predicate(s)) {
1287
0
                auto col_name = s->col_name();
1288
0
                cid = get_column_id(col_name);
1289
0
            }
1290
0
        }
1291
0
        RETURN_IF_ERROR(state->get_query_ctx()->get_runtime_predicate(id).init_target(
1292
0
                node_id(), _slot_id_to_slot_desc, cid));
1293
0
    }
1294
1295
8
    RETURN_IF_CANCELLED(state);
1296
8
    return Status::OK();
1297
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18OlapScanLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18JDBCScanLocalStateEE7prepareEPNS_12RuntimeStateE
_ZN5doris13ScanOperatorXINS_18FileScanLocalStateEE7prepareEPNS_12RuntimeStateE
Line
Count
Source
1267
8
Status ScanOperatorX<LocalStateType>::prepare(RuntimeState* state) {
1268
8
    _input_tuple_desc = state->desc_tbl().get_tuple_descriptor(_input_tuple_id);
1269
8
    _output_tuple_desc = state->desc_tbl().get_tuple_descriptor(_output_tuple_id);
1270
8
    RETURN_IF_ERROR(OperatorX<LocalStateType>::prepare(state));
1271
1272
8
    const auto slots = _output_tuple_desc->slots();
1273
24
    for (auto* slot : slots) {
1274
24
        _colname_to_slot_id[slot->col_name()] = slot->id();
1275
24
        _slot_id_to_slot_desc[slot->id()] = slot;
1276
24
    }
1277
8
    for (auto id : _topn_filter_source_node_ids) {
1278
0
        int cid = -1;
1279
0
        if (state->get_query_ctx()->get_runtime_predicate(id).target_is_slot(node_id())) {
1280
0
            auto s = _slot_id_to_slot_desc[state->get_query_ctx()
1281
0
                                                   ->get_runtime_predicate(id)
1282
0
                                                   .get_texpr(node_id())
1283
0
                                                   .nodes[0]
1284
0
                                                   .slot_ref.slot_id];
1285
0
            DCHECK(s != nullptr);
1286
0
            if (can_push_down_column_predicate(s)) {
1287
0
                auto col_name = s->col_name();
1288
0
                cid = get_column_id(col_name);
1289
0
            }
1290
0
        }
1291
0
        RETURN_IF_ERROR(state->get_query_ctx()->get_runtime_predicate(id).init_target(
1292
0
                node_id(), _slot_id_to_slot_desc, cid));
1293
0
    }
1294
1295
8
    RETURN_IF_CANCELLED(state);
1296
8
    return Status::OK();
1297
8
}
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MetaScanLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_21GroupCommitLocalStateEE7prepareEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris13ScanOperatorXINS_18MockScanLocalStateEE7prepareEPNS_12RuntimeStateE
1298
1299
template <typename Derived>
1300
8
Status ScanLocalState<Derived>::close(RuntimeState* state) {
1301
8
    if (_closed) {
1302
0
        return Status::OK();
1303
0
    }
1304
8
    COUNTER_UPDATE(exec_time_counter(), _scan_dependency->watcher_elapse_time());
1305
8
    int64_t rf_time = 0;
1306
8
    for (auto& dep : _filter_dependencies) {
1307
0
        rf_time += dep->watcher_elapse_time();
1308
0
    }
1309
8
    COUNTER_UPDATE(exec_time_counter(), rf_time);
1310
8
    SCOPED_TIMER(_close_timer);
1311
1312
8
    SCOPED_TIMER(exec_time_counter());
1313
8
    if (auto ctx = _scanner_ctx.load()) {
1314
0
        ctx->stop_scanners(state);
1315
        // _scanner_ctx may be accessed in debug_string concurrently
1316
        // so use atomic shared ptr to avoid use after free
1317
0
        _scanner_ctx.store(nullptr);
1318
0
    }
1319
8
    std::list<std::shared_ptr<ScannerDelegate>> {}.swap(_scanners);
1320
8
    COUNTER_SET(_wait_for_dependency_timer, _scan_dependency->watcher_elapse_time());
1321
8
    COUNTER_SET(_wait_for_rf_timer, rf_time);
1322
8
    _helper.collect_realtime_profile(custom_profile());
1323
8
    return PipelineXLocalState<>::close(state);
1324
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18OlapScanLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18JDBCScanLocalStateEE5closeEPNS_12RuntimeStateE
_ZN5doris14ScanLocalStateINS_18FileScanLocalStateEE5closeEPNS_12RuntimeStateE
Line
Count
Source
1300
8
Status ScanLocalState<Derived>::close(RuntimeState* state) {
1301
8
    if (_closed) {
1302
0
        return Status::OK();
1303
0
    }
1304
8
    COUNTER_UPDATE(exec_time_counter(), _scan_dependency->watcher_elapse_time());
1305
8
    int64_t rf_time = 0;
1306
8
    for (auto& dep : _filter_dependencies) {
1307
0
        rf_time += dep->watcher_elapse_time();
1308
0
    }
1309
8
    COUNTER_UPDATE(exec_time_counter(), rf_time);
1310
8
    SCOPED_TIMER(_close_timer);
1311
1312
8
    SCOPED_TIMER(exec_time_counter());
1313
8
    if (auto ctx = _scanner_ctx.load()) {
1314
0
        ctx->stop_scanners(state);
1315
        // _scanner_ctx may be accessed in debug_string concurrently
1316
        // so use atomic shared ptr to avoid use after free
1317
0
        _scanner_ctx.store(nullptr);
1318
0
    }
1319
8
    std::list<std::shared_ptr<ScannerDelegate>> {}.swap(_scanners);
1320
8
    COUNTER_SET(_wait_for_dependency_timer, _scan_dependency->watcher_elapse_time());
1321
8
    COUNTER_SET(_wait_for_rf_timer, rf_time);
1322
8
    _helper.collect_realtime_profile(custom_profile());
1323
8
    return PipelineXLocalState<>::close(state);
1324
8
}
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MetaScanLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_21GroupCommitLocalStateEE5closeEPNS_12RuntimeStateE
Unexecuted instantiation: _ZN5doris14ScanLocalStateINS_18MockScanLocalStateEE5closeEPNS_12RuntimeStateE
1325
1326
template <typename LocalStateType>
1327
0
Status ScanOperatorX<LocalStateType>::get_block_impl(RuntimeState* state, Block* block, bool* eos) {
1328
0
    auto& local_state = get_local_state(state);
1329
0
    SCOPED_TIMER(local_state.exec_time_counter());
1330
1331
0
    if (state->is_cancelled()) {
1332
0
        if (auto ctx = local_state._scanner_ctx.load()) {
1333
0
            ctx->stop_scanners(state);
1334
0
        }
1335
0
        return state->cancel_reason();
1336
0
    }
1337
1338
0
    if (local_state._eos) {
1339
0
        *eos = true;
1340
0
        return Status::OK();
1341
0
    }
1342
1343
0
    auto ctx = local_state._scanner_ctx.load();
1344
1345
0
    DCHECK(ctx != nullptr);
1346
0
    RETURN_IF_ERROR(ctx->get_block_from_queue(state, block, eos, 0));
1347
1348
0
    local_state.reached_limit(block, eos);
1349
0
    if (*eos) {
1350
        // reach limit, stop the scanners.
1351
0
        ctx->stop_scanners(state);
1352
0
        local_state._scanner_profile->add_info_string("EOS", "True");
1353
0
    }
1354
1355
0
    return Status::OK();
1356
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
1357
1358
template <typename LocalStateType>
1359
0
size_t ScanOperatorX<LocalStateType>::get_reserve_mem_size(RuntimeState* state) {
1360
0
    auto& local_state = get_local_state(state);
1361
0
    auto ctx = local_state._scanner_ctx.load();
1362
0
    if (!local_state._opened || local_state._closed || !ctx) {
1363
0
        return config::doris_scanner_row_bytes;
1364
0
    }
1365
1366
0
    if (local_state.low_memory_mode()) {
1367
0
        return ctx->low_memory_mode_scan_bytes_per_scanner() * ctx->low_memory_mode_scanners();
1368
0
    } else {
1369
0
        const auto peak_usage = local_state._memory_used_counter->value();
1370
0
        const auto block_usage = ctx->block_memory_usage();
1371
0
        if (peak_usage > 0) {
1372
            // It is only a safty check, to avoid some counter not right.
1373
0
            if (peak_usage > block_usage) {
1374
0
                return peak_usage - block_usage;
1375
0
            } else {
1376
0
                return config::doris_scanner_row_bytes;
1377
0
            }
1378
0
        } else {
1379
            // If the scan operator is first time to run, then we think it will occupy doris_scanner_row_bytes.
1380
            // It maybe a little smaller than actual usage.
1381
0
            return config::doris_scanner_row_bytes;
1382
            // return local_state._scanner_ctx->max_bytes_in_queue();
1383
0
        }
1384
0
    }
1385
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
1386
1387
template class ScanOperatorX<OlapScanLocalState>;
1388
template class ScanLocalState<OlapScanLocalState>;
1389
template class ScanOperatorX<JDBCScanLocalState>;
1390
template class ScanLocalState<JDBCScanLocalState>;
1391
template class ScanOperatorX<FileScanLocalState>;
1392
template class ScanLocalState<FileScanLocalState>;
1393
template class ScanLocalState<MetaScanLocalState>;
1394
template class ScanOperatorX<MetaScanLocalState>;
1395
template class ScanOperatorX<GroupCommitLocalState>;
1396
template class ScanLocalState<GroupCommitLocalState>;
1397
1398
#ifdef BE_TEST
1399
template class ScanOperatorX<MockScanLocalState>;
1400
template class ScanLocalState<MockScanLocalState>;
1401
#endif
1402
1403
} // namespace doris