Coverage Report

Created: 2026-03-16 19:58

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/storage/predicate/predicate_creator.h
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
#pragma once
19
20
#include <fast_float/fast_float.h>
21
22
#include <charconv>
23
#include <stdexcept>
24
#include <string>
25
#include <type_traits>
26
27
#include "common/exception.h"
28
#include "common/status.h"
29
#include "core/data_type/data_type.h"
30
#include "core/data_type/define_primitive_type.h"
31
#include "core/data_type/primitive_type.h"
32
#include "core/string_ref.h"
33
#include "exprs/create_predicate_function.h"
34
#include "exprs/function/cast/cast_parameters.h"
35
#include "exprs/function/cast/cast_to_basic_number_common.h"
36
#include "exprs/hybrid_set.h"
37
#include "storage/olap_utils.h"
38
#include "storage/predicate/bloom_filter_predicate.h"
39
#include "storage/predicate/column_predicate.h"
40
#include "storage/predicate/comparison_predicate.h"
41
#include "storage/predicate/in_list_predicate.h"
42
#include "storage/predicate/null_predicate.h"
43
#include "storage/tablet/tablet_schema.h"
44
#include "util/date_func.h"
45
#include "util/string_util.h"
46
47
namespace doris {
48
#include "common/compile_check_begin.h"
49
50
template <PrimitiveType TYPE, PredicateType PT>
51
std::shared_ptr<ColumnPredicate> create_in_list_predicate(const uint32_t cid,
52
                                                          const std::string col_name,
53
                                                          const std::shared_ptr<HybridSetBase>& set,
54
                                                          bool is_opposite,
55
10
                                                          size_t char_length = 0) {
56
10
    auto set_size = set->size();
57
10
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
10
    } else if (set_size == 2) {
61
2
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
2
                                                               char_length);
63
8
    } else if (set_size == 3) {
64
6
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
6
                                                               char_length);
66
6
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
2
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
2
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
2
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
2
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
2
    } else {
82
2
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
2
                cid, col_name, set, is_opposite, char_length);
84
2
    }
85
10
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE3ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE4ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE5ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE6ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
2
                                                          size_t char_length = 0) {
56
2
    auto set_size = set->size();
57
2
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
2
    } else if (set_size == 2) {
61
0
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
0
                                                               char_length);
63
2
    } else if (set_size == 3) {
64
2
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
2
                                                               char_length);
66
2
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
0
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
0
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
0
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
0
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
0
    } else {
82
0
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
0
                cid, col_name, set, is_opposite, char_length);
84
0
    }
85
2
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE7ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE8ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE9ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
1
                                                          size_t char_length = 0) {
56
1
    auto set_size = set->size();
57
1
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
1
    } else if (set_size == 2) {
61
0
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
0
                                                               char_length);
63
1
    } else if (set_size == 3) {
64
0
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
0
                                                               char_length);
66
1
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
1
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
1
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
1
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
1
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
1
    } else {
82
1
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
1
                cid, col_name, set, is_opposite, char_length);
84
1
    }
85
1
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE20ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE28ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE29ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE30ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE35ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE15ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE10ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE23ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE11ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE25ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE12ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE26ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE42ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
2
                                                          size_t char_length = 0) {
56
2
    auto set_size = set->size();
57
2
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
2
    } else if (set_size == 2) {
61
1
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
1
                                                               char_length);
63
1
    } else if (set_size == 3) {
64
1
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
1
                                                               char_length);
66
1
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
0
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
0
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
0
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
0
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
0
    } else {
82
0
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
0
                cid, col_name, set, is_opposite, char_length);
84
0
    }
85
2
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE2ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE36ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE37ELNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE3ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE4ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE5ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE6ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
2
                                                          size_t char_length = 0) {
56
2
    auto set_size = set->size();
57
2
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
2
    } else if (set_size == 2) {
61
0
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
0
                                                               char_length);
63
2
    } else if (set_size == 3) {
64
2
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
2
                                                               char_length);
66
2
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
0
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
0
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
0
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
0
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
0
    } else {
82
0
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
0
                cid, col_name, set, is_opposite, char_length);
84
0
    }
85
2
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE7ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE8ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE9ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
1
                                                          size_t char_length = 0) {
56
1
    auto set_size = set->size();
57
1
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
1
    } else if (set_size == 2) {
61
0
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
0
                                                               char_length);
63
1
    } else if (set_size == 3) {
64
0
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
0
                                                               char_length);
66
1
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
1
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
1
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
1
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
1
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
1
    } else {
82
1
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
1
                cid, col_name, set, is_opposite, char_length);
84
1
    }
85
1
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE20ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE28ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE29ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE30ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE35ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE15ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE10ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE23ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE11ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE25ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE12ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE26ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
_ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE42ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Line
Count
Source
55
2
                                                          size_t char_length = 0) {
56
2
    auto set_size = set->size();
57
2
    if (set_size == 1) {
58
0
        return InListPredicateBase<TYPE, PT, 1>::create_shared(cid, col_name, set, is_opposite,
59
0
                                                               char_length);
60
2
    } else if (set_size == 2) {
61
1
        return InListPredicateBase<TYPE, PT, 2>::create_shared(cid, col_name, set, is_opposite,
62
1
                                                               char_length);
63
1
    } else if (set_size == 3) {
64
1
        return InListPredicateBase<TYPE, PT, 3>::create_shared(cid, col_name, set, is_opposite,
65
1
                                                               char_length);
66
1
    } else if (set_size == 4) {
67
0
        return InListPredicateBase<TYPE, PT, 4>::create_shared(cid, col_name, set, is_opposite,
68
0
                                                               char_length);
69
0
    } else if (set_size == 5) {
70
0
        return InListPredicateBase<TYPE, PT, 5>::create_shared(cid, col_name, set, is_opposite,
71
0
                                                               char_length);
72
0
    } else if (set_size == 6) {
73
0
        return InListPredicateBase<TYPE, PT, 6>::create_shared(cid, col_name, set, is_opposite,
74
0
                                                               char_length);
75
0
    } else if (set_size == 7) {
76
0
        return InListPredicateBase<TYPE, PT, 7>::create_shared(cid, col_name, set, is_opposite,
77
0
                                                               char_length);
78
0
    } else if (set_size == FIXED_CONTAINER_MAX_SIZE) {
79
0
        return InListPredicateBase<TYPE, PT, 8>::create_shared(cid, col_name, set, is_opposite,
80
0
                                                               char_length);
81
0
    } else {
82
0
        return InListPredicateBase<TYPE, PT, FIXED_CONTAINER_MAX_SIZE + 1>::create_shared(
83
0
                cid, col_name, set, is_opposite, char_length);
84
0
    }
85
2
}
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE2ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE36ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
Unexecuted instantiation: _ZN5doris24create_in_list_predicateILNS_13PrimitiveTypeE37ELNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS3_INS_13HybridSetBaseEEbm
86
87
template <PredicateType PT>
88
std::shared_ptr<ColumnPredicate> create_in_list_predicate(const uint32_t cid,
89
                                                          const std::string col_name,
90
                                                          const DataTypePtr& data_type,
91
                                                          const std::shared_ptr<HybridSetBase> set,
92
10
                                                          bool is_opposite) {
93
10
    switch (data_type->get_primitive_type()) {
94
0
    case TYPE_TINYINT: {
95
0
        return create_in_list_predicate<TYPE_TINYINT, PT>(cid, col_name, set, is_opposite);
96
0
    }
97
0
    case TYPE_SMALLINT: {
98
0
        return create_in_list_predicate<TYPE_SMALLINT, PT>(cid, col_name, set, is_opposite);
99
0
    }
100
0
    case TYPE_INT: {
101
0
        return create_in_list_predicate<TYPE_INT, PT>(cid, col_name, set, is_opposite);
102
0
    }
103
4
    case TYPE_BIGINT: {
104
4
        return create_in_list_predicate<TYPE_BIGINT, PT>(cid, col_name, set, is_opposite);
105
0
    }
106
0
    case TYPE_LARGEINT: {
107
0
        return create_in_list_predicate<TYPE_LARGEINT, PT>(cid, col_name, set, is_opposite);
108
0
    }
109
0
    case TYPE_FLOAT: {
110
0
        return create_in_list_predicate<TYPE_FLOAT, PT>(cid, col_name, set, is_opposite);
111
0
    }
112
2
    case TYPE_DOUBLE: {
113
2
        return create_in_list_predicate<TYPE_DOUBLE, PT>(cid, col_name, set, is_opposite);
114
0
    }
115
0
    case TYPE_DECIMALV2: {
116
0
        return create_in_list_predicate<TYPE_DECIMALV2, PT>(cid, col_name, set, is_opposite);
117
0
    }
118
0
    case TYPE_DECIMAL32: {
119
0
        return create_in_list_predicate<TYPE_DECIMAL32, PT>(cid, col_name, set, is_opposite);
120
0
    }
121
0
    case TYPE_DECIMAL64: {
122
0
        return create_in_list_predicate<TYPE_DECIMAL64, PT>(cid, col_name, set, is_opposite);
123
0
    }
124
0
    case TYPE_DECIMAL128I: {
125
0
        return create_in_list_predicate<TYPE_DECIMAL128I, PT>(cid, col_name, set, is_opposite);
126
0
    }
127
0
    case TYPE_DECIMAL256: {
128
0
        return create_in_list_predicate<TYPE_DECIMAL256, PT>(cid, col_name, set, is_opposite);
129
0
    }
130
0
    case TYPE_CHAR: {
131
0
        return create_in_list_predicate<TYPE_CHAR, PT>(
132
0
                cid, col_name, set, is_opposite,
133
0
                assert_cast<const DataTypeString*>(remove_nullable(data_type).get())->len());
134
0
    }
135
0
    case TYPE_VARCHAR: {
136
0
        return create_in_list_predicate<TYPE_VARCHAR, PT>(cid, col_name, set, is_opposite);
137
0
    }
138
0
    case TYPE_STRING: {
139
0
        return create_in_list_predicate<TYPE_STRING, PT>(cid, col_name, set, is_opposite);
140
0
    }
141
0
    case TYPE_DATE: {
142
0
        return create_in_list_predicate<TYPE_DATE, PT>(cid, col_name, set, is_opposite);
143
0
    }
144
0
    case TYPE_DATEV2: {
145
0
        return create_in_list_predicate<TYPE_DATEV2, PT>(cid, col_name, set, is_opposite);
146
0
    }
147
0
    case TYPE_DATETIME: {
148
0
        return create_in_list_predicate<TYPE_DATETIME, PT>(cid, col_name, set, is_opposite);
149
0
    }
150
0
    case TYPE_DATETIMEV2: {
151
0
        return create_in_list_predicate<TYPE_DATETIMEV2, PT>(cid, col_name, set, is_opposite);
152
0
    }
153
4
    case TYPE_TIMESTAMPTZ: {
154
4
        return create_in_list_predicate<TYPE_TIMESTAMPTZ, PT>(cid, col_name, set, is_opposite);
155
0
    }
156
0
    case TYPE_BOOLEAN: {
157
0
        return create_in_list_predicate<TYPE_BOOLEAN, PT>(cid, col_name, set, is_opposite);
158
0
    }
159
0
    case TYPE_IPV4: {
160
0
        return create_in_list_predicate<TYPE_IPV4, PT>(cid, col_name, set, is_opposite);
161
0
    }
162
0
    case TYPE_IPV6: {
163
0
        return create_in_list_predicate<TYPE_IPV6, PT>(cid, col_name, set, is_opposite);
164
0
    }
165
0
    default:
166
0
        throw Exception(Status::InternalError("Unsupported type {} for in_predicate",
167
0
                                              type_to_string(data_type->get_primitive_type())));
168
0
        return nullptr;
169
10
    }
170
10
}
_ZN5doris24create_in_list_predicateILNS_13PredicateTypeE7EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEES2_INS_13HybridSetBaseEEb
Line
Count
Source
92
5
                                                          bool is_opposite) {
93
5
    switch (data_type->get_primitive_type()) {
94
0
    case TYPE_TINYINT: {
95
0
        return create_in_list_predicate<TYPE_TINYINT, PT>(cid, col_name, set, is_opposite);
96
0
    }
97
0
    case TYPE_SMALLINT: {
98
0
        return create_in_list_predicate<TYPE_SMALLINT, PT>(cid, col_name, set, is_opposite);
99
0
    }
100
0
    case TYPE_INT: {
101
0
        return create_in_list_predicate<TYPE_INT, PT>(cid, col_name, set, is_opposite);
102
0
    }
103
2
    case TYPE_BIGINT: {
104
2
        return create_in_list_predicate<TYPE_BIGINT, PT>(cid, col_name, set, is_opposite);
105
0
    }
106
0
    case TYPE_LARGEINT: {
107
0
        return create_in_list_predicate<TYPE_LARGEINT, PT>(cid, col_name, set, is_opposite);
108
0
    }
109
0
    case TYPE_FLOAT: {
110
0
        return create_in_list_predicate<TYPE_FLOAT, PT>(cid, col_name, set, is_opposite);
111
0
    }
112
1
    case TYPE_DOUBLE: {
113
1
        return create_in_list_predicate<TYPE_DOUBLE, PT>(cid, col_name, set, is_opposite);
114
0
    }
115
0
    case TYPE_DECIMALV2: {
116
0
        return create_in_list_predicate<TYPE_DECIMALV2, PT>(cid, col_name, set, is_opposite);
117
0
    }
118
0
    case TYPE_DECIMAL32: {
119
0
        return create_in_list_predicate<TYPE_DECIMAL32, PT>(cid, col_name, set, is_opposite);
120
0
    }
121
0
    case TYPE_DECIMAL64: {
122
0
        return create_in_list_predicate<TYPE_DECIMAL64, PT>(cid, col_name, set, is_opposite);
123
0
    }
124
0
    case TYPE_DECIMAL128I: {
125
0
        return create_in_list_predicate<TYPE_DECIMAL128I, PT>(cid, col_name, set, is_opposite);
126
0
    }
127
0
    case TYPE_DECIMAL256: {
128
0
        return create_in_list_predicate<TYPE_DECIMAL256, PT>(cid, col_name, set, is_opposite);
129
0
    }
130
0
    case TYPE_CHAR: {
131
0
        return create_in_list_predicate<TYPE_CHAR, PT>(
132
0
                cid, col_name, set, is_opposite,
133
0
                assert_cast<const DataTypeString*>(remove_nullable(data_type).get())->len());
134
0
    }
135
0
    case TYPE_VARCHAR: {
136
0
        return create_in_list_predicate<TYPE_VARCHAR, PT>(cid, col_name, set, is_opposite);
137
0
    }
138
0
    case TYPE_STRING: {
139
0
        return create_in_list_predicate<TYPE_STRING, PT>(cid, col_name, set, is_opposite);
140
0
    }
141
0
    case TYPE_DATE: {
142
0
        return create_in_list_predicate<TYPE_DATE, PT>(cid, col_name, set, is_opposite);
143
0
    }
144
0
    case TYPE_DATEV2: {
145
0
        return create_in_list_predicate<TYPE_DATEV2, PT>(cid, col_name, set, is_opposite);
146
0
    }
147
0
    case TYPE_DATETIME: {
148
0
        return create_in_list_predicate<TYPE_DATETIME, PT>(cid, col_name, set, is_opposite);
149
0
    }
150
0
    case TYPE_DATETIMEV2: {
151
0
        return create_in_list_predicate<TYPE_DATETIMEV2, PT>(cid, col_name, set, is_opposite);
152
0
    }
153
2
    case TYPE_TIMESTAMPTZ: {
154
2
        return create_in_list_predicate<TYPE_TIMESTAMPTZ, PT>(cid, col_name, set, is_opposite);
155
0
    }
156
0
    case TYPE_BOOLEAN: {
157
0
        return create_in_list_predicate<TYPE_BOOLEAN, PT>(cid, col_name, set, is_opposite);
158
0
    }
159
0
    case TYPE_IPV4: {
160
0
        return create_in_list_predicate<TYPE_IPV4, PT>(cid, col_name, set, is_opposite);
161
0
    }
162
0
    case TYPE_IPV6: {
163
0
        return create_in_list_predicate<TYPE_IPV6, PT>(cid, col_name, set, is_opposite);
164
0
    }
165
0
    default:
166
0
        throw Exception(Status::InternalError("Unsupported type {} for in_predicate",
167
0
                                              type_to_string(data_type->get_primitive_type())));
168
0
        return nullptr;
169
5
    }
170
5
}
_ZN5doris24create_in_list_predicateILNS_13PredicateTypeE8EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEES2_INS_13HybridSetBaseEEb
Line
Count
Source
92
5
                                                          bool is_opposite) {
93
5
    switch (data_type->get_primitive_type()) {
94
0
    case TYPE_TINYINT: {
95
0
        return create_in_list_predicate<TYPE_TINYINT, PT>(cid, col_name, set, is_opposite);
96
0
    }
97
0
    case TYPE_SMALLINT: {
98
0
        return create_in_list_predicate<TYPE_SMALLINT, PT>(cid, col_name, set, is_opposite);
99
0
    }
100
0
    case TYPE_INT: {
101
0
        return create_in_list_predicate<TYPE_INT, PT>(cid, col_name, set, is_opposite);
102
0
    }
103
2
    case TYPE_BIGINT: {
104
2
        return create_in_list_predicate<TYPE_BIGINT, PT>(cid, col_name, set, is_opposite);
105
0
    }
106
0
    case TYPE_LARGEINT: {
107
0
        return create_in_list_predicate<TYPE_LARGEINT, PT>(cid, col_name, set, is_opposite);
108
0
    }
109
0
    case TYPE_FLOAT: {
110
0
        return create_in_list_predicate<TYPE_FLOAT, PT>(cid, col_name, set, is_opposite);
111
0
    }
112
1
    case TYPE_DOUBLE: {
113
1
        return create_in_list_predicate<TYPE_DOUBLE, PT>(cid, col_name, set, is_opposite);
114
0
    }
115
0
    case TYPE_DECIMALV2: {
116
0
        return create_in_list_predicate<TYPE_DECIMALV2, PT>(cid, col_name, set, is_opposite);
117
0
    }
118
0
    case TYPE_DECIMAL32: {
119
0
        return create_in_list_predicate<TYPE_DECIMAL32, PT>(cid, col_name, set, is_opposite);
120
0
    }
121
0
    case TYPE_DECIMAL64: {
122
0
        return create_in_list_predicate<TYPE_DECIMAL64, PT>(cid, col_name, set, is_opposite);
123
0
    }
124
0
    case TYPE_DECIMAL128I: {
125
0
        return create_in_list_predicate<TYPE_DECIMAL128I, PT>(cid, col_name, set, is_opposite);
126
0
    }
127
0
    case TYPE_DECIMAL256: {
128
0
        return create_in_list_predicate<TYPE_DECIMAL256, PT>(cid, col_name, set, is_opposite);
129
0
    }
130
0
    case TYPE_CHAR: {
131
0
        return create_in_list_predicate<TYPE_CHAR, PT>(
132
0
                cid, col_name, set, is_opposite,
133
0
                assert_cast<const DataTypeString*>(remove_nullable(data_type).get())->len());
134
0
    }
135
0
    case TYPE_VARCHAR: {
136
0
        return create_in_list_predicate<TYPE_VARCHAR, PT>(cid, col_name, set, is_opposite);
137
0
    }
138
0
    case TYPE_STRING: {
139
0
        return create_in_list_predicate<TYPE_STRING, PT>(cid, col_name, set, is_opposite);
140
0
    }
141
0
    case TYPE_DATE: {
142
0
        return create_in_list_predicate<TYPE_DATE, PT>(cid, col_name, set, is_opposite);
143
0
    }
144
0
    case TYPE_DATEV2: {
145
0
        return create_in_list_predicate<TYPE_DATEV2, PT>(cid, col_name, set, is_opposite);
146
0
    }
147
0
    case TYPE_DATETIME: {
148
0
        return create_in_list_predicate<TYPE_DATETIME, PT>(cid, col_name, set, is_opposite);
149
0
    }
150
0
    case TYPE_DATETIMEV2: {
151
0
        return create_in_list_predicate<TYPE_DATETIMEV2, PT>(cid, col_name, set, is_opposite);
152
0
    }
153
2
    case TYPE_TIMESTAMPTZ: {
154
2
        return create_in_list_predicate<TYPE_TIMESTAMPTZ, PT>(cid, col_name, set, is_opposite);
155
0
    }
156
0
    case TYPE_BOOLEAN: {
157
0
        return create_in_list_predicate<TYPE_BOOLEAN, PT>(cid, col_name, set, is_opposite);
158
0
    }
159
0
    case TYPE_IPV4: {
160
0
        return create_in_list_predicate<TYPE_IPV4, PT>(cid, col_name, set, is_opposite);
161
0
    }
162
0
    case TYPE_IPV6: {
163
0
        return create_in_list_predicate<TYPE_IPV6, PT>(cid, col_name, set, is_opposite);
164
0
    }
165
0
    default:
166
0
        throw Exception(Status::InternalError("Unsupported type {} for in_predicate",
167
0
                                              type_to_string(data_type->get_primitive_type())));
168
0
        return nullptr;
169
5
    }
170
5
}
171
172
template <PredicateType PT>
173
std::shared_ptr<ColumnPredicate> create_comparison_predicate(const uint32_t cid,
174
                                                             const std::string col_name,
175
                                                             const DataTypePtr& data_type,
176
221
                                                             const Field& value, bool opposite) {
177
221
    switch (data_type->get_primitive_type()) {
178
7
    case TYPE_TINYINT: {
179
7
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
7
                                                                        opposite);
181
0
    }
182
8
    case TYPE_SMALLINT: {
183
8
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
8
                                                                         opposite);
185
0
    }
186
75
    case TYPE_INT: {
187
75
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
6
    case TYPE_BIGINT: {
190
6
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
6
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
60
    case TYPE_DOUBLE: {
202
60
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
60
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
38
    case TYPE_STRING: {
244
38
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
38
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
26
    case TYPE_TIMESTAMPTZ: {
264
26
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
26
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
1
    case TYPE_IPV4: {
272
1
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
1
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
221
    }
284
221
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE1EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
64
                                                             const Field& value, bool opposite) {
177
64
    switch (data_type->get_primitive_type()) {
178
6
    case TYPE_TINYINT: {
179
6
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
6
                                                                        opposite);
181
0
    }
182
1
    case TYPE_SMALLINT: {
183
1
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
1
                                                                         opposite);
185
0
    }
186
0
    case TYPE_INT: {
187
0
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
3
    case TYPE_BIGINT: {
190
3
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
3
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
38
    case TYPE_STRING: {
244
38
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
38
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
5
    case TYPE_TIMESTAMPTZ: {
264
5
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
5
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
1
    case TYPE_IPV4: {
272
1
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
1
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
64
    }
284
64
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE2EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
21
                                                             const Field& value, bool opposite) {
177
21
    switch (data_type->get_primitive_type()) {
178
1
    case TYPE_TINYINT: {
179
1
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
1
                                                                        opposite);
181
0
    }
182
4
    case TYPE_SMALLINT: {
183
4
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
4
                                                                         opposite);
185
0
    }
186
0
    case TYPE_INT: {
187
0
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
1
    case TYPE_BIGINT: {
190
1
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
1
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
0
    case TYPE_STRING: {
244
0
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
0
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
5
    case TYPE_TIMESTAMPTZ: {
264
5
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
5
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
0
    case TYPE_IPV4: {
272
0
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
0
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
21
    }
284
21
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE3EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
89
                                                             const Field& value, bool opposite) {
177
89
    switch (data_type->get_primitive_type()) {
178
0
    case TYPE_TINYINT: {
179
0
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
0
                                                                        opposite);
181
0
    }
182
0
    case TYPE_SMALLINT: {
183
0
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
0
                                                                         opposite);
185
0
    }
186
75
    case TYPE_INT: {
187
75
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
0
    case TYPE_BIGINT: {
190
0
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
0
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
0
    case TYPE_STRING: {
244
0
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
0
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
4
    case TYPE_TIMESTAMPTZ: {
264
4
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
4
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
0
    case TYPE_IPV4: {
272
0
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
0
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
89
    }
284
89
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE5EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
15
                                                             const Field& value, bool opposite) {
177
15
    switch (data_type->get_primitive_type()) {
178
0
    case TYPE_TINYINT: {
179
0
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
0
                                                                        opposite);
181
0
    }
182
1
    case TYPE_SMALLINT: {
183
1
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
1
                                                                         opposite);
185
0
    }
186
0
    case TYPE_INT: {
187
0
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
0
    case TYPE_BIGINT: {
190
0
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
0
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
0
    case TYPE_STRING: {
244
0
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
0
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
4
    case TYPE_TIMESTAMPTZ: {
264
4
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
4
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
0
    case TYPE_IPV4: {
272
0
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
0
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
15
    }
284
15
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE4EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
16
                                                             const Field& value, bool opposite) {
177
16
    switch (data_type->get_primitive_type()) {
178
0
    case TYPE_TINYINT: {
179
0
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
0
                                                                        opposite);
181
0
    }
182
1
    case TYPE_SMALLINT: {
183
1
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
1
                                                                         opposite);
185
0
    }
186
0
    case TYPE_INT: {
187
0
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
1
    case TYPE_BIGINT: {
190
1
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
1
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
0
    case TYPE_STRING: {
244
0
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
0
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
4
    case TYPE_TIMESTAMPTZ: {
264
4
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
4
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
0
    case TYPE_IPV4: {
272
0
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
0
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
16
    }
284
16
}
_ZN5doris27create_comparison_predicateILNS_13PredicateTypeE6EEESt10shared_ptrINS_15ColumnPredicateEEjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS2_IKNS_9IDataTypeEERKNS_5FieldEb
Line
Count
Source
176
16
                                                             const Field& value, bool opposite) {
177
16
    switch (data_type->get_primitive_type()) {
178
0
    case TYPE_TINYINT: {
179
0
        return ComparisonPredicateBase<TYPE_TINYINT, PT>::create_shared(cid, col_name, value,
180
0
                                                                        opposite);
181
0
    }
182
1
    case TYPE_SMALLINT: {
183
1
        return ComparisonPredicateBase<TYPE_SMALLINT, PT>::create_shared(cid, col_name, value,
184
1
                                                                         opposite);
185
0
    }
186
0
    case TYPE_INT: {
187
0
        return ComparisonPredicateBase<TYPE_INT, PT>::create_shared(cid, col_name, value, opposite);
188
0
    }
189
1
    case TYPE_BIGINT: {
190
1
        return ComparisonPredicateBase<TYPE_BIGINT, PT>::create_shared(cid, col_name, value,
191
1
                                                                       opposite);
192
0
    }
193
0
    case TYPE_LARGEINT: {
194
0
        return ComparisonPredicateBase<TYPE_LARGEINT, PT>::create_shared(cid, col_name, value,
195
0
                                                                         opposite);
196
0
    }
197
0
    case TYPE_FLOAT: {
198
0
        return ComparisonPredicateBase<TYPE_FLOAT, PT>::create_shared(cid, col_name, value,
199
0
                                                                      opposite);
200
0
    }
201
10
    case TYPE_DOUBLE: {
202
10
        return ComparisonPredicateBase<TYPE_DOUBLE, PT>::create_shared(cid, col_name, value,
203
10
                                                                       opposite);
204
0
    }
205
0
    case TYPE_DECIMALV2: {
206
0
        return ComparisonPredicateBase<TYPE_DECIMALV2, PT>::create_shared(cid, col_name, value,
207
0
                                                                          opposite);
208
0
    }
209
0
    case TYPE_DECIMAL32: {
210
0
        return ComparisonPredicateBase<TYPE_DECIMAL32, PT>::create_shared(cid, col_name, value,
211
0
                                                                          opposite);
212
0
    }
213
0
    case TYPE_DECIMAL64: {
214
0
        return ComparisonPredicateBase<TYPE_DECIMAL64, PT>::create_shared(cid, col_name, value,
215
0
                                                                          opposite);
216
0
    }
217
0
    case TYPE_DECIMAL128I: {
218
0
        return ComparisonPredicateBase<TYPE_DECIMAL128I, PT>::create_shared(cid, col_name, value,
219
0
                                                                            opposite);
220
0
    }
221
0
    case TYPE_DECIMAL256: {
222
0
        return ComparisonPredicateBase<TYPE_DECIMAL256, PT>::create_shared(cid, col_name, value,
223
0
                                                                           opposite);
224
0
    }
225
0
    case TYPE_CHAR: {
226
0
        auto target = std::max(cast_set<size_t>(assert_cast<const DataTypeString*>(
227
0
                                                        remove_nullable(data_type).get())
228
0
                                                        ->len()),
229
0
                               value.template get<TYPE_CHAR>().size());
230
0
        if (target > value.template get<TYPE_CHAR>().size()) {
231
0
            std::string tmp(target, '\0');
232
0
            memcpy(tmp.data(), value.template get<TYPE_CHAR>().data(),
233
0
                   value.template get<TYPE_CHAR>().size());
234
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
235
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(std::move(tmp)), opposite);
236
0
        } else {
237
0
            return ComparisonPredicateBase<TYPE_CHAR, PT>::create_shared(
238
0
                    cid, col_name, Field::create_field<TYPE_CHAR>(value.template get<TYPE_CHAR>()),
239
0
                    opposite);
240
0
        }
241
0
    }
242
0
    case TYPE_VARCHAR:
243
0
    case TYPE_STRING: {
244
0
        return ComparisonPredicateBase<TYPE_STRING, PT>::create_shared(cid, col_name, value,
245
0
                                                                       opposite);
246
0
    }
247
0
    case TYPE_DATE: {
248
0
        return ComparisonPredicateBase<TYPE_DATE, PT>::create_shared(cid, col_name, value,
249
0
                                                                     opposite);
250
0
    }
251
0
    case TYPE_DATEV2: {
252
0
        return ComparisonPredicateBase<TYPE_DATEV2, PT>::create_shared(cid, col_name, value,
253
0
                                                                       opposite);
254
0
    }
255
0
    case TYPE_DATETIME: {
256
0
        return ComparisonPredicateBase<TYPE_DATETIME, PT>::create_shared(cid, col_name, value,
257
0
                                                                         opposite);
258
0
    }
259
0
    case TYPE_DATETIMEV2: {
260
0
        return ComparisonPredicateBase<TYPE_DATETIMEV2, PT>::create_shared(cid, col_name, value,
261
0
                                                                           opposite);
262
0
    }
263
4
    case TYPE_TIMESTAMPTZ: {
264
4
        return ComparisonPredicateBase<TYPE_TIMESTAMPTZ, PT>::create_shared(cid, col_name, value,
265
4
                                                                            opposite);
266
0
    }
267
0
    case TYPE_BOOLEAN: {
268
0
        return ComparisonPredicateBase<TYPE_BOOLEAN, PT>::create_shared(cid, col_name, value,
269
0
                                                                        opposite);
270
0
    }
271
0
    case TYPE_IPV4: {
272
0
        return ComparisonPredicateBase<TYPE_IPV4, PT>::create_shared(cid, col_name, value,
273
0
                                                                     opposite);
274
0
    }
275
0
    case TYPE_IPV6: {
276
0
        return ComparisonPredicateBase<TYPE_IPV6, PT>::create_shared(cid, col_name, value,
277
0
                                                                     opposite);
278
0
    }
279
0
    default:
280
0
        throw Exception(Status::InternalError("Unsupported type {} for comparison_predicate",
281
0
                                              type_to_string(data_type->get_primitive_type())));
282
0
        return nullptr;
283
16
    }
284
16
}
285
286
template <PrimitiveType TYPE>
287
2
std::shared_ptr<HybridSetBase> build_set() {
288
2
    return std::make_shared<std::conditional_t<
289
2
            is_string_type(TYPE), StringSet<DynamicContainer<std::string>>,
290
2
            HybridSet<TYPE, DynamicContainer<typename PrimitiveTypeTraits<TYPE>::CppType>,
291
2
                      PredicateColumnType<PredicateEvaluateType<TYPE>>>>>(false);
292
2
}
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE3EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE4EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE5EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE6EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE7EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE8EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE9EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE11EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE12EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE25EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE26EEESt10shared_ptrINS_13HybridSetBaseEEv
_ZN5doris9build_setILNS_13PrimitiveTypeE42EEESt10shared_ptrINS_13HybridSetBaseEEv
Line
Count
Source
287
2
std::shared_ptr<HybridSetBase> build_set() {
288
2
    return std::make_shared<std::conditional_t<
289
2
            is_string_type(TYPE), StringSet<DynamicContainer<std::string>>,
290
2
            HybridSet<TYPE, DynamicContainer<typename PrimitiveTypeTraits<TYPE>::CppType>,
291
2
                      PredicateColumnType<PredicateEvaluateType<TYPE>>>>>(false);
292
2
}
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE2EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE36EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE37EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE20EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE28EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE29EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE30EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE35EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE15EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE10EEESt10shared_ptrINS_13HybridSetBaseEEv
Unexecuted instantiation: _ZN5doris9build_setILNS_13PrimitiveTypeE23EEESt10shared_ptrINS_13HybridSetBaseEEv
293
294
std::shared_ptr<ColumnPredicate> create_bloom_filter_predicate(
295
        const uint32_t cid, const std::string col_name, const DataTypePtr& data_type,
296
        const std::shared_ptr<BloomFilterFuncBase>& filter);
297
298
std::shared_ptr<ColumnPredicate> create_bitmap_filter_predicate(
299
        const uint32_t cid, const std::string col_name, const DataTypePtr& data_type,
300
        const std::shared_ptr<BitmapFilterFuncBase>& filter);
301
#include "common/compile_check_end.h"
302
} //namespace doris