Coverage Report

Created: 2026-06-06 15:22

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