Coverage Report

Created: 2026-08-03 03:21

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exec/common/field_visitors.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
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Common/FieldVisitors.h
19
// and modified by Doris
20
21
#pragma once
22
23
#include "common/demangle.h"
24
#include "common/exception.h"
25
#include "common/status.h"
26
#include "core/accurate_comparison.h"
27
#include "core/data_type/primitive_type.h"
28
#include "core/field.h"
29
30
namespace doris {
31
32
/** StaticVisitor (and its descendants) - class with overloaded operator() for all types of fields.
33
  * You could call visitor for field using function 'apply_visitor'.
34
  * Also "binary visitor" is supported - its operator() takes two arguments.
35
  */
36
template <typename R = void>
37
struct StaticVisitor {
38
    using ResultType = R;
39
};
40
41
/// F is template parameter, to allow universal reference for field, that is useful for const and non-const values.
42
template <typename Visitor, typename F>
43
43.0M
typename std::decay_t<Visitor>::ResultType apply_visitor(Visitor&& visitor, F&& field) {
44
43.0M
    switch (field.get_type()) {
45
242k
    case PrimitiveType::TYPE_NULL:
46
242k
        return visitor.template apply<PrimitiveType::TYPE_NULL>(field.template get<TYPE_NULL>());
47
640
    case PrimitiveType::TYPE_DATETIMEV2:
48
640
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2>(
49
640
                field.template get<TYPE_DATETIMEV2>());
50
0
    case PrimitiveType::TYPE_DATETIMEV2_NANO:
51
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2_NANO>(
52
0
                field.template get<TYPE_DATETIMEV2_NANO>());
53
0
    case PrimitiveType::TYPE_TIMESTAMPTZ:
54
0
        return visitor.template apply<PrimitiveType::TYPE_TIMESTAMPTZ>(
55
0
                field.template get<TYPE_TIMESTAMPTZ>());
56
83.2k
    case PrimitiveType::TYPE_LARGEINT:
57
83.2k
        return visitor.template apply<PrimitiveType::TYPE_LARGEINT>(
58
83.2k
                field.template get<TYPE_LARGEINT>());
59
0
    case PrimitiveType::TYPE_DATETIME:
60
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIME>(
61
0
                field.template get<TYPE_DATETIME>());
62
0
    case PrimitiveType::TYPE_DATE:
63
0
        return visitor.template apply<PrimitiveType::TYPE_DATE>(field.template get<TYPE_DATE>());
64
528
    case PrimitiveType::TYPE_DATEV2:
65
528
        return visitor.template apply<PrimitiveType::TYPE_DATEV2>(
66
528
                field.template get<TYPE_DATEV2>());
67
651k
    case PrimitiveType::TYPE_BOOLEAN:
68
651k
        return visitor.template apply<PrimitiveType::TYPE_BOOLEAN>(
69
651k
                field.template get<TYPE_BOOLEAN>());
70
1.38k
    case PrimitiveType::TYPE_TINYINT:
71
1.38k
        return visitor.template apply<PrimitiveType::TYPE_TINYINT>(
72
1.38k
                field.template get<TYPE_TINYINT>());
73
1.37k
    case PrimitiveType::TYPE_SMALLINT:
74
1.37k
        return visitor.template apply<PrimitiveType::TYPE_SMALLINT>(
75
1.37k
                field.template get<TYPE_SMALLINT>());
76
3.84k
    case PrimitiveType::TYPE_INT:
77
3.84k
        return visitor.template apply<PrimitiveType::TYPE_INT>(field.template get<TYPE_INT>());
78
11.4M
    case PrimitiveType::TYPE_BIGINT:
79
11.4M
        return visitor.template apply<PrimitiveType::TYPE_BIGINT>(
80
11.4M
                field.template get<TYPE_BIGINT>());
81
0
    case PrimitiveType::TYPE_UINT32:
82
0
        return visitor.template apply<PrimitiveType::TYPE_UINT32>(
83
0
                field.template get<TYPE_UINT32>());
84
0
    case PrimitiveType::TYPE_UINT64:
85
0
        return visitor.template apply<PrimitiveType::TYPE_UINT64>(
86
0
                field.template get<TYPE_UINT64>());
87
1.14k
    case PrimitiveType::TYPE_FLOAT:
88
1.14k
        return visitor.template apply<PrimitiveType::TYPE_FLOAT>(field.template get<TYPE_FLOAT>());
89
0
    case PrimitiveType::TYPE_TIMEV2:
90
0
        return visitor.template apply<PrimitiveType::TYPE_TIMEV2>(
91
0
                field.template get<TYPE_TIMEV2>());
92
5.94M
    case PrimitiveType::TYPE_DOUBLE:
93
5.94M
        return visitor.template apply<PrimitiveType::TYPE_DOUBLE>(
94
5.94M
                field.template get<TYPE_DOUBLE>());
95
408
    case PrimitiveType::TYPE_IPV4:
96
408
        return visitor.template apply<PrimitiveType::TYPE_IPV4>(field.template get<TYPE_IPV4>());
97
352
    case PrimitiveType::TYPE_IPV6:
98
352
        return visitor.template apply<PrimitiveType::TYPE_IPV6>(field.template get<TYPE_IPV6>());
99
22.3M
    case PrimitiveType::TYPE_STRING:
100
22.3M
        return visitor.template apply<PrimitiveType::TYPE_STRING>(
101
22.3M
                field.template get<TYPE_STRING>());
102
0
    case PrimitiveType::TYPE_CHAR:
103
0
        return visitor.template apply<PrimitiveType::TYPE_CHAR>(field.template get<TYPE_CHAR>());
104
0
    case PrimitiveType::TYPE_VARCHAR:
105
0
        return visitor.template apply<PrimitiveType::TYPE_VARCHAR>(
106
0
                field.template get<TYPE_VARCHAR>());
107
0
    case PrimitiveType::TYPE_VARBINARY:
108
0
        return visitor.template apply<PrimitiveType::TYPE_VARBINARY>(
109
0
                field.template get<TYPE_VARBINARY>());
110
2.24M
    case PrimitiveType::TYPE_ARRAY:
111
2.24M
        return visitor.template apply<PrimitiveType::TYPE_ARRAY>(field.template get<TYPE_ARRAY>());
112
2
    case PrimitiveType::TYPE_STRUCT:
113
2
        return visitor.template apply<PrimitiveType::TYPE_STRUCT>(
114
2
                field.template get<TYPE_STRUCT>());
115
0
    case PrimitiveType::TYPE_MAP:
116
0
        return visitor.template apply<PrimitiveType::TYPE_MAP>(field.template get<TYPE_MAP>());
117
2
    case PrimitiveType::TYPE_VARIANT:
118
2
        return visitor.template apply<PrimitiveType::TYPE_VARIANT>(
119
2
                field.template get<TYPE_VARIANT>());
120
1.00k
    case PrimitiveType::TYPE_DECIMAL32:
121
1.00k
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL32>(
122
1.00k
                field.template get<TYPE_DECIMAL32>());
123
928
    case PrimitiveType::TYPE_DECIMAL64:
124
928
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL64>(
125
928
                field.template get<TYPE_DECIMAL64>());
126
0
    case PrimitiveType::TYPE_DECIMALV2:
127
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMALV2>(
128
0
                field.template get<TYPE_DECIMALV2>());
129
912
    case PrimitiveType::TYPE_DECIMAL128I:
130
912
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL128I>(
131
912
                field.template get<TYPE_DECIMAL128I>());
132
744
    case PrimitiveType::TYPE_DECIMAL256:
133
744
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL256>(
134
744
                field.template get<TYPE_DECIMAL256>());
135
0
    case PrimitiveType::TYPE_BITMAP:
136
0
        return visitor.template apply<PrimitiveType::TYPE_BITMAP>(
137
0
                field.template get<TYPE_BITMAP>());
138
0
    case PrimitiveType::TYPE_HLL:
139
0
        return visitor.template apply<PrimitiveType::TYPE_HLL>(field.template get<TYPE_HLL>());
140
0
    case PrimitiveType::TYPE_QUANTILE_STATE:
141
0
        return visitor.template apply<PrimitiveType::TYPE_QUANTILE_STATE>(
142
0
                field.template get<TYPE_QUANTILE_STATE>());
143
93.7k
    case PrimitiveType::TYPE_JSONB:
144
93.7k
        return visitor.template apply<PrimitiveType::TYPE_JSONB>(field.template get<TYPE_JSONB>());
145
0
    default:
146
0
        throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Bad type of Field {}",
147
0
                               static_cast<int>(field.get_type()));
148
0
        return {};
149
43.0M
    }
150
43.0M
}
Unexecuted instantiation: _ZN5doris13apply_visitorIRNS_26FieldVisitorToStringSimpleERKNS_5FieldEEENSt5decayIT_E4type10ResultTypeEOS7_OT0_
_ZN5doris13apply_visitorIRNS_12variant_util24FieldVisitorToScalarTypeERKNS_5FieldEEENSt5decayIT_E4type10ResultTypeEOS8_OT0_
Line
Count
Source
43
2.94M
typename std::decay_t<Visitor>::ResultType apply_visitor(Visitor&& visitor, F&& field) {
44
2.94M
    switch (field.get_type()) {
45
12.1k
    case PrimitiveType::TYPE_NULL:
46
12.1k
        return visitor.template apply<PrimitiveType::TYPE_NULL>(field.template get<TYPE_NULL>());
47
320
    case PrimitiveType::TYPE_DATETIMEV2:
48
320
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2>(
49
320
                field.template get<TYPE_DATETIMEV2>());
50
0
    case PrimitiveType::TYPE_DATETIMEV2_NANO:
51
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2_NANO>(
52
0
                field.template get<TYPE_DATETIMEV2_NANO>());
53
0
    case PrimitiveType::TYPE_TIMESTAMPTZ:
54
0
        return visitor.template apply<PrimitiveType::TYPE_TIMESTAMPTZ>(
55
0
                field.template get<TYPE_TIMESTAMPTZ>());
56
29.3k
    case PrimitiveType::TYPE_LARGEINT:
57
29.3k
        return visitor.template apply<PrimitiveType::TYPE_LARGEINT>(
58
29.3k
                field.template get<TYPE_LARGEINT>());
59
0
    case PrimitiveType::TYPE_DATETIME:
60
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIME>(
61
0
                field.template get<TYPE_DATETIME>());
62
0
    case PrimitiveType::TYPE_DATE:
63
0
        return visitor.template apply<PrimitiveType::TYPE_DATE>(field.template get<TYPE_DATE>());
64
264
    case PrimitiveType::TYPE_DATEV2:
65
264
        return visitor.template apply<PrimitiveType::TYPE_DATEV2>(
66
264
                field.template get<TYPE_DATEV2>());
67
58.0k
    case PrimitiveType::TYPE_BOOLEAN:
68
58.0k
        return visitor.template apply<PrimitiveType::TYPE_BOOLEAN>(
69
58.0k
                field.template get<TYPE_BOOLEAN>());
70
688
    case PrimitiveType::TYPE_TINYINT:
71
688
        return visitor.template apply<PrimitiveType::TYPE_TINYINT>(
72
688
                field.template get<TYPE_TINYINT>());
73
680
    case PrimitiveType::TYPE_SMALLINT:
74
680
        return visitor.template apply<PrimitiveType::TYPE_SMALLINT>(
75
680
                field.template get<TYPE_SMALLINT>());
76
1.20k
    case PrimitiveType::TYPE_INT:
77
1.20k
        return visitor.template apply<PrimitiveType::TYPE_INT>(field.template get<TYPE_INT>());
78
657k
    case PrimitiveType::TYPE_BIGINT:
79
657k
        return visitor.template apply<PrimitiveType::TYPE_BIGINT>(
80
657k
                field.template get<TYPE_BIGINT>());
81
0
    case PrimitiveType::TYPE_UINT32:
82
0
        return visitor.template apply<PrimitiveType::TYPE_UINT32>(
83
0
                field.template get<TYPE_UINT32>());
84
0
    case PrimitiveType::TYPE_UINT64:
85
0
        return visitor.template apply<PrimitiveType::TYPE_UINT64>(
86
0
                field.template get<TYPE_UINT64>());
87
572
    case PrimitiveType::TYPE_FLOAT:
88
572
        return visitor.template apply<PrimitiveType::TYPE_FLOAT>(field.template get<TYPE_FLOAT>());
89
0
    case PrimitiveType::TYPE_TIMEV2:
90
0
        return visitor.template apply<PrimitiveType::TYPE_TIMEV2>(
91
0
                field.template get<TYPE_TIMEV2>());
92
171k
    case PrimitiveType::TYPE_DOUBLE:
93
171k
        return visitor.template apply<PrimitiveType::TYPE_DOUBLE>(
94
171k
                field.template get<TYPE_DOUBLE>());
95
204
    case PrimitiveType::TYPE_IPV4:
96
204
        return visitor.template apply<PrimitiveType::TYPE_IPV4>(field.template get<TYPE_IPV4>());
97
176
    case PrimitiveType::TYPE_IPV6:
98
176
        return visitor.template apply<PrimitiveType::TYPE_IPV6>(field.template get<TYPE_IPV6>());
99
890k
    case PrimitiveType::TYPE_STRING:
100
890k
        return visitor.template apply<PrimitiveType::TYPE_STRING>(
101
890k
                field.template get<TYPE_STRING>());
102
0
    case PrimitiveType::TYPE_CHAR:
103
0
        return visitor.template apply<PrimitiveType::TYPE_CHAR>(field.template get<TYPE_CHAR>());
104
0
    case PrimitiveType::TYPE_VARCHAR:
105
0
        return visitor.template apply<PrimitiveType::TYPE_VARCHAR>(
106
0
                field.template get<TYPE_VARCHAR>());
107
0
    case PrimitiveType::TYPE_VARBINARY:
108
0
        return visitor.template apply<PrimitiveType::TYPE_VARBINARY>(
109
0
                field.template get<TYPE_VARBINARY>());
110
1.11M
    case PrimitiveType::TYPE_ARRAY:
111
1.11M
        return visitor.template apply<PrimitiveType::TYPE_ARRAY>(field.template get<TYPE_ARRAY>());
112
1
    case PrimitiveType::TYPE_STRUCT:
113
1
        return visitor.template apply<PrimitiveType::TYPE_STRUCT>(
114
1
                field.template get<TYPE_STRUCT>());
115
0
    case PrimitiveType::TYPE_MAP:
116
0
        return visitor.template apply<PrimitiveType::TYPE_MAP>(field.template get<TYPE_MAP>());
117
1
    case PrimitiveType::TYPE_VARIANT:
118
1
        return visitor.template apply<PrimitiveType::TYPE_VARIANT>(
119
1
                field.template get<TYPE_VARIANT>());
120
504
    case PrimitiveType::TYPE_DECIMAL32:
121
504
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL32>(
122
504
                field.template get<TYPE_DECIMAL32>());
123
464
    case PrimitiveType::TYPE_DECIMAL64:
124
464
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL64>(
125
464
                field.template get<TYPE_DECIMAL64>());
126
0
    case PrimitiveType::TYPE_DECIMALV2:
127
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMALV2>(
128
0
                field.template get<TYPE_DECIMALV2>());
129
456
    case PrimitiveType::TYPE_DECIMAL128I:
130
456
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL128I>(
131
456
                field.template get<TYPE_DECIMAL128I>());
132
372
    case PrimitiveType::TYPE_DECIMAL256:
133
372
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL256>(
134
372
                field.template get<TYPE_DECIMAL256>());
135
0
    case PrimitiveType::TYPE_BITMAP:
136
0
        return visitor.template apply<PrimitiveType::TYPE_BITMAP>(
137
0
                field.template get<TYPE_BITMAP>());
138
0
    case PrimitiveType::TYPE_HLL:
139
0
        return visitor.template apply<PrimitiveType::TYPE_HLL>(field.template get<TYPE_HLL>());
140
0
    case PrimitiveType::TYPE_QUANTILE_STATE:
141
0
        return visitor.template apply<PrimitiveType::TYPE_QUANTILE_STATE>(
142
0
                field.template get<TYPE_QUANTILE_STATE>());
143
26
    case PrimitiveType::TYPE_JSONB:
144
26
        return visitor.template apply<PrimitiveType::TYPE_JSONB>(field.template get<TYPE_JSONB>());
145
0
    default:
146
0
        throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Bad type of Field {}",
147
0
                               static_cast<int>(field.get_type()));
148
0
        return {};
149
2.94M
    }
150
2.94M
}
_ZN5doris13apply_visitorINS_12variant_util32FieldVisitorToNumberOfDimensionsERKNS_5FieldEEENSt5decayIT_E4type10ResultTypeEOS7_OT0_
Line
Count
Source
43
19.4M
typename std::decay_t<Visitor>::ResultType apply_visitor(Visitor&& visitor, F&& field) {
44
19.4M
    switch (field.get_type()) {
45
109k
    case PrimitiveType::TYPE_NULL:
46
109k
        return visitor.template apply<PrimitiveType::TYPE_NULL>(field.template get<TYPE_NULL>());
47
0
    case PrimitiveType::TYPE_DATETIMEV2:
48
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2>(
49
0
                field.template get<TYPE_DATETIMEV2>());
50
0
    case PrimitiveType::TYPE_DATETIMEV2_NANO:
51
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2_NANO>(
52
0
                field.template get<TYPE_DATETIMEV2_NANO>());
53
0
    case PrimitiveType::TYPE_TIMESTAMPTZ:
54
0
        return visitor.template apply<PrimitiveType::TYPE_TIMESTAMPTZ>(
55
0
                field.template get<TYPE_TIMESTAMPTZ>());
56
12.3k
    case PrimitiveType::TYPE_LARGEINT:
57
12.3k
        return visitor.template apply<PrimitiveType::TYPE_LARGEINT>(
58
12.3k
                field.template get<TYPE_LARGEINT>());
59
0
    case PrimitiveType::TYPE_DATETIME:
60
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIME>(
61
0
                field.template get<TYPE_DATETIME>());
62
0
    case PrimitiveType::TYPE_DATE:
63
0
        return visitor.template apply<PrimitiveType::TYPE_DATE>(field.template get<TYPE_DATE>());
64
0
    case PrimitiveType::TYPE_DATEV2:
65
0
        return visitor.template apply<PrimitiveType::TYPE_DATEV2>(
66
0
                field.template get<TYPE_DATEV2>());
67
267k
    case PrimitiveType::TYPE_BOOLEAN:
68
267k
        return visitor.template apply<PrimitiveType::TYPE_BOOLEAN>(
69
267k
                field.template get<TYPE_BOOLEAN>());
70
2
    case PrimitiveType::TYPE_TINYINT:
71
2
        return visitor.template apply<PrimitiveType::TYPE_TINYINT>(
72
2
                field.template get<TYPE_TINYINT>());
73
7
    case PrimitiveType::TYPE_SMALLINT:
74
7
        return visitor.template apply<PrimitiveType::TYPE_SMALLINT>(
75
7
                field.template get<TYPE_SMALLINT>());
76
718
    case PrimitiveType::TYPE_INT:
77
718
        return visitor.template apply<PrimitiveType::TYPE_INT>(field.template get<TYPE_INT>());
78
5.05M
    case PrimitiveType::TYPE_BIGINT:
79
5.05M
        return visitor.template apply<PrimitiveType::TYPE_BIGINT>(
80
5.05M
                field.template get<TYPE_BIGINT>());
81
0
    case PrimitiveType::TYPE_UINT32:
82
0
        return visitor.template apply<PrimitiveType::TYPE_UINT32>(
83
0
                field.template get<TYPE_UINT32>());
84
0
    case PrimitiveType::TYPE_UINT64:
85
0
        return visitor.template apply<PrimitiveType::TYPE_UINT64>(
86
0
                field.template get<TYPE_UINT64>());
87
1
    case PrimitiveType::TYPE_FLOAT:
88
1
        return visitor.template apply<PrimitiveType::TYPE_FLOAT>(field.template get<TYPE_FLOAT>());
89
0
    case PrimitiveType::TYPE_TIMEV2:
90
0
        return visitor.template apply<PrimitiveType::TYPE_TIMEV2>(
91
0
                field.template get<TYPE_TIMEV2>());
92
2.80M
    case PrimitiveType::TYPE_DOUBLE:
93
2.80M
        return visitor.template apply<PrimitiveType::TYPE_DOUBLE>(
94
2.80M
                field.template get<TYPE_DOUBLE>());
95
0
    case PrimitiveType::TYPE_IPV4:
96
0
        return visitor.template apply<PrimitiveType::TYPE_IPV4>(field.template get<TYPE_IPV4>());
97
0
    case PrimitiveType::TYPE_IPV6:
98
0
        return visitor.template apply<PrimitiveType::TYPE_IPV6>(field.template get<TYPE_IPV6>());
99
10.3M
    case PrimitiveType::TYPE_STRING:
100
10.3M
        return visitor.template apply<PrimitiveType::TYPE_STRING>(
101
10.3M
                field.template get<TYPE_STRING>());
102
0
    case PrimitiveType::TYPE_CHAR:
103
0
        return visitor.template apply<PrimitiveType::TYPE_CHAR>(field.template get<TYPE_CHAR>());
104
0
    case PrimitiveType::TYPE_VARCHAR:
105
0
        return visitor.template apply<PrimitiveType::TYPE_VARCHAR>(
106
0
                field.template get<TYPE_VARCHAR>());
107
0
    case PrimitiveType::TYPE_VARBINARY:
108
0
        return visitor.template apply<PrimitiveType::TYPE_VARBINARY>(
109
0
                field.template get<TYPE_VARBINARY>());
110
861k
    case PrimitiveType::TYPE_ARRAY:
111
861k
        return visitor.template apply<PrimitiveType::TYPE_ARRAY>(field.template get<TYPE_ARRAY>());
112
1
    case PrimitiveType::TYPE_STRUCT:
113
1
        return visitor.template apply<PrimitiveType::TYPE_STRUCT>(
114
1
                field.template get<TYPE_STRUCT>());
115
0
    case PrimitiveType::TYPE_MAP:
116
0
        return visitor.template apply<PrimitiveType::TYPE_MAP>(field.template get<TYPE_MAP>());
117
1
    case PrimitiveType::TYPE_VARIANT:
118
1
        return visitor.template apply<PrimitiveType::TYPE_VARIANT>(
119
1
                field.template get<TYPE_VARIANT>());
120
0
    case PrimitiveType::TYPE_DECIMAL32:
121
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL32>(
122
0
                field.template get<TYPE_DECIMAL32>());
123
0
    case PrimitiveType::TYPE_DECIMAL64:
124
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL64>(
125
0
                field.template get<TYPE_DECIMAL64>());
126
0
    case PrimitiveType::TYPE_DECIMALV2:
127
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMALV2>(
128
0
                field.template get<TYPE_DECIMALV2>());
129
0
    case PrimitiveType::TYPE_DECIMAL128I:
130
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL128I>(
131
0
                field.template get<TYPE_DECIMAL128I>());
132
0
    case PrimitiveType::TYPE_DECIMAL256:
133
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL256>(
134
0
                field.template get<TYPE_DECIMAL256>());
135
0
    case PrimitiveType::TYPE_BITMAP:
136
0
        return visitor.template apply<PrimitiveType::TYPE_BITMAP>(
137
0
                field.template get<TYPE_BITMAP>());
138
0
    case PrimitiveType::TYPE_HLL:
139
0
        return visitor.template apply<PrimitiveType::TYPE_HLL>(field.template get<TYPE_HLL>());
140
0
    case PrimitiveType::TYPE_QUANTILE_STATE:
141
0
        return visitor.template apply<PrimitiveType::TYPE_QUANTILE_STATE>(
142
0
                field.template get<TYPE_QUANTILE_STATE>());
143
46.8k
    case PrimitiveType::TYPE_JSONB:
144
46.8k
        return visitor.template apply<PrimitiveType::TYPE_JSONB>(field.template get<TYPE_JSONB>());
145
0
    default:
146
0
        throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Bad type of Field {}",
147
0
                               static_cast<int>(field.get_type()));
148
0
        return {};
149
19.4M
    }
150
19.4M
}
_ZN5doris13apply_visitorIRNS_12variant_util32FieldVisitorToNumberOfDimensionsERKNS_5FieldEEENSt5decayIT_E4type10ResultTypeEOS8_OT0_
Line
Count
Source
43
2.08M
typename std::decay_t<Visitor>::ResultType apply_visitor(Visitor&& visitor, F&& field) {
44
2.08M
    switch (field.get_type()) {
45
12.1k
    case PrimitiveType::TYPE_NULL:
46
12.1k
        return visitor.template apply<PrimitiveType::TYPE_NULL>(field.template get<TYPE_NULL>());
47
320
    case PrimitiveType::TYPE_DATETIMEV2:
48
320
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2>(
49
320
                field.template get<TYPE_DATETIMEV2>());
50
0
    case PrimitiveType::TYPE_DATETIMEV2_NANO:
51
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2_NANO>(
52
0
                field.template get<TYPE_DATETIMEV2_NANO>());
53
0
    case PrimitiveType::TYPE_TIMESTAMPTZ:
54
0
        return visitor.template apply<PrimitiveType::TYPE_TIMESTAMPTZ>(
55
0
                field.template get<TYPE_TIMESTAMPTZ>());
56
29.3k
    case PrimitiveType::TYPE_LARGEINT:
57
29.3k
        return visitor.template apply<PrimitiveType::TYPE_LARGEINT>(
58
29.3k
                field.template get<TYPE_LARGEINT>());
59
0
    case PrimitiveType::TYPE_DATETIME:
60
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIME>(
61
0
                field.template get<TYPE_DATETIME>());
62
0
    case PrimitiveType::TYPE_DATE:
63
0
        return visitor.template apply<PrimitiveType::TYPE_DATE>(field.template get<TYPE_DATE>());
64
264
    case PrimitiveType::TYPE_DATEV2:
65
264
        return visitor.template apply<PrimitiveType::TYPE_DATEV2>(
66
264
                field.template get<TYPE_DATEV2>());
67
58.0k
    case PrimitiveType::TYPE_BOOLEAN:
68
58.0k
        return visitor.template apply<PrimitiveType::TYPE_BOOLEAN>(
69
58.0k
                field.template get<TYPE_BOOLEAN>());
70
688
    case PrimitiveType::TYPE_TINYINT:
71
688
        return visitor.template apply<PrimitiveType::TYPE_TINYINT>(
72
688
                field.template get<TYPE_TINYINT>());
73
680
    case PrimitiveType::TYPE_SMALLINT:
74
680
        return visitor.template apply<PrimitiveType::TYPE_SMALLINT>(
75
680
                field.template get<TYPE_SMALLINT>());
76
1.20k
    case PrimitiveType::TYPE_INT:
77
1.20k
        return visitor.template apply<PrimitiveType::TYPE_INT>(field.template get<TYPE_INT>());
78
658k
    case PrimitiveType::TYPE_BIGINT:
79
658k
        return visitor.template apply<PrimitiveType::TYPE_BIGINT>(
80
658k
                field.template get<TYPE_BIGINT>());
81
0
    case PrimitiveType::TYPE_UINT32:
82
0
        return visitor.template apply<PrimitiveType::TYPE_UINT32>(
83
0
                field.template get<TYPE_UINT32>());
84
0
    case PrimitiveType::TYPE_UINT64:
85
0
        return visitor.template apply<PrimitiveType::TYPE_UINT64>(
86
0
                field.template get<TYPE_UINT64>());
87
572
    case PrimitiveType::TYPE_FLOAT:
88
572
        return visitor.template apply<PrimitiveType::TYPE_FLOAT>(field.template get<TYPE_FLOAT>());
89
0
    case PrimitiveType::TYPE_TIMEV2:
90
0
        return visitor.template apply<PrimitiveType::TYPE_TIMEV2>(
91
0
                field.template get<TYPE_TIMEV2>());
92
171k
    case PrimitiveType::TYPE_DOUBLE:
93
171k
        return visitor.template apply<PrimitiveType::TYPE_DOUBLE>(
94
171k
                field.template get<TYPE_DOUBLE>());
95
204
    case PrimitiveType::TYPE_IPV4:
96
204
        return visitor.template apply<PrimitiveType::TYPE_IPV4>(field.template get<TYPE_IPV4>());
97
176
    case PrimitiveType::TYPE_IPV6:
98
176
        return visitor.template apply<PrimitiveType::TYPE_IPV6>(field.template get<TYPE_IPV6>());
99
890k
    case PrimitiveType::TYPE_STRING:
100
890k
        return visitor.template apply<PrimitiveType::TYPE_STRING>(
101
890k
                field.template get<TYPE_STRING>());
102
0
    case PrimitiveType::TYPE_CHAR:
103
0
        return visitor.template apply<PrimitiveType::TYPE_CHAR>(field.template get<TYPE_CHAR>());
104
0
    case PrimitiveType::TYPE_VARCHAR:
105
0
        return visitor.template apply<PrimitiveType::TYPE_VARCHAR>(
106
0
                field.template get<TYPE_VARCHAR>());
107
0
    case PrimitiveType::TYPE_VARBINARY:
108
0
        return visitor.template apply<PrimitiveType::TYPE_VARBINARY>(
109
0
                field.template get<TYPE_VARBINARY>());
110
259k
    case PrimitiveType::TYPE_ARRAY:
111
259k
        return visitor.template apply<PrimitiveType::TYPE_ARRAY>(field.template get<TYPE_ARRAY>());
112
0
    case PrimitiveType::TYPE_STRUCT:
113
0
        return visitor.template apply<PrimitiveType::TYPE_STRUCT>(
114
0
                field.template get<TYPE_STRUCT>());
115
0
    case PrimitiveType::TYPE_MAP:
116
0
        return visitor.template apply<PrimitiveType::TYPE_MAP>(field.template get<TYPE_MAP>());
117
0
    case PrimitiveType::TYPE_VARIANT:
118
0
        return visitor.template apply<PrimitiveType::TYPE_VARIANT>(
119
0
                field.template get<TYPE_VARIANT>());
120
504
    case PrimitiveType::TYPE_DECIMAL32:
121
504
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL32>(
122
504
                field.template get<TYPE_DECIMAL32>());
123
464
    case PrimitiveType::TYPE_DECIMAL64:
124
464
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL64>(
125
464
                field.template get<TYPE_DECIMAL64>());
126
0
    case PrimitiveType::TYPE_DECIMALV2:
127
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMALV2>(
128
0
                field.template get<TYPE_DECIMALV2>());
129
456
    case PrimitiveType::TYPE_DECIMAL128I:
130
456
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL128I>(
131
456
                field.template get<TYPE_DECIMAL128I>());
132
372
    case PrimitiveType::TYPE_DECIMAL256:
133
372
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL256>(
134
372
                field.template get<TYPE_DECIMAL256>());
135
0
    case PrimitiveType::TYPE_BITMAP:
136
0
        return visitor.template apply<PrimitiveType::TYPE_BITMAP>(
137
0
                field.template get<TYPE_BITMAP>());
138
0
    case PrimitiveType::TYPE_HLL:
139
0
        return visitor.template apply<PrimitiveType::TYPE_HLL>(field.template get<TYPE_HLL>());
140
0
    case PrimitiveType::TYPE_QUANTILE_STATE:
141
0
        return visitor.template apply<PrimitiveType::TYPE_QUANTILE_STATE>(
142
0
                field.template get<TYPE_QUANTILE_STATE>());
143
26
    case PrimitiveType::TYPE_JSONB:
144
26
        return visitor.template apply<PrimitiveType::TYPE_JSONB>(field.template get<TYPE_JSONB>());
145
0
    default:
146
0
        throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Bad type of Field {}",
147
0
                               static_cast<int>(field.get_type()));
148
0
        return {};
149
2.08M
    }
150
2.08M
}
_ZN5doris13apply_visitorIRNS_12variant_util30SimpleFieldVisitorToScalarTypeERKNS_5FieldEEENSt5decayIT_E4type10ResultTypeEOS8_OT0_
Line
Count
Source
43
18.5M
typename std::decay_t<Visitor>::ResultType apply_visitor(Visitor&& visitor, F&& field) {
44
18.5M
    switch (field.get_type()) {
45
109k
    case PrimitiveType::TYPE_NULL:
46
109k
        return visitor.template apply<PrimitiveType::TYPE_NULL>(field.template get<TYPE_NULL>());
47
0
    case PrimitiveType::TYPE_DATETIMEV2:
48
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2>(
49
0
                field.template get<TYPE_DATETIMEV2>());
50
0
    case PrimitiveType::TYPE_DATETIMEV2_NANO:
51
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIMEV2_NANO>(
52
0
                field.template get<TYPE_DATETIMEV2_NANO>());
53
0
    case PrimitiveType::TYPE_TIMESTAMPTZ:
54
0
        return visitor.template apply<PrimitiveType::TYPE_TIMESTAMPTZ>(
55
0
                field.template get<TYPE_TIMESTAMPTZ>());
56
12.3k
    case PrimitiveType::TYPE_LARGEINT:
57
12.3k
        return visitor.template apply<PrimitiveType::TYPE_LARGEINT>(
58
12.3k
                field.template get<TYPE_LARGEINT>());
59
0
    case PrimitiveType::TYPE_DATETIME:
60
0
        return visitor.template apply<PrimitiveType::TYPE_DATETIME>(
61
0
                field.template get<TYPE_DATETIME>());
62
0
    case PrimitiveType::TYPE_DATE:
63
0
        return visitor.template apply<PrimitiveType::TYPE_DATE>(field.template get<TYPE_DATE>());
64
0
    case PrimitiveType::TYPE_DATEV2:
65
0
        return visitor.template apply<PrimitiveType::TYPE_DATEV2>(
66
0
                field.template get<TYPE_DATEV2>());
67
267k
    case PrimitiveType::TYPE_BOOLEAN:
68
267k
        return visitor.template apply<PrimitiveType::TYPE_BOOLEAN>(
69
267k
                field.template get<TYPE_BOOLEAN>());
70
2
    case PrimitiveType::TYPE_TINYINT:
71
2
        return visitor.template apply<PrimitiveType::TYPE_TINYINT>(
72
2
                field.template get<TYPE_TINYINT>());
73
7
    case PrimitiveType::TYPE_SMALLINT:
74
7
        return visitor.template apply<PrimitiveType::TYPE_SMALLINT>(
75
7
                field.template get<TYPE_SMALLINT>());
76
718
    case PrimitiveType::TYPE_INT:
77
718
        return visitor.template apply<PrimitiveType::TYPE_INT>(field.template get<TYPE_INT>());
78
5.05M
    case PrimitiveType::TYPE_BIGINT:
79
5.05M
        return visitor.template apply<PrimitiveType::TYPE_BIGINT>(
80
5.05M
                field.template get<TYPE_BIGINT>());
81
0
    case PrimitiveType::TYPE_UINT32:
82
0
        return visitor.template apply<PrimitiveType::TYPE_UINT32>(
83
0
                field.template get<TYPE_UINT32>());
84
0
    case PrimitiveType::TYPE_UINT64:
85
0
        return visitor.template apply<PrimitiveType::TYPE_UINT64>(
86
0
                field.template get<TYPE_UINT64>());
87
1
    case PrimitiveType::TYPE_FLOAT:
88
1
        return visitor.template apply<PrimitiveType::TYPE_FLOAT>(field.template get<TYPE_FLOAT>());
89
0
    case PrimitiveType::TYPE_TIMEV2:
90
0
        return visitor.template apply<PrimitiveType::TYPE_TIMEV2>(
91
0
                field.template get<TYPE_TIMEV2>());
92
2.80M
    case PrimitiveType::TYPE_DOUBLE:
93
2.80M
        return visitor.template apply<PrimitiveType::TYPE_DOUBLE>(
94
2.80M
                field.template get<TYPE_DOUBLE>());
95
0
    case PrimitiveType::TYPE_IPV4:
96
0
        return visitor.template apply<PrimitiveType::TYPE_IPV4>(field.template get<TYPE_IPV4>());
97
0
    case PrimitiveType::TYPE_IPV6:
98
0
        return visitor.template apply<PrimitiveType::TYPE_IPV6>(field.template get<TYPE_IPV6>());
99
10.3M
    case PrimitiveType::TYPE_STRING:
100
10.3M
        return visitor.template apply<PrimitiveType::TYPE_STRING>(
101
10.3M
                field.template get<TYPE_STRING>());
102
0
    case PrimitiveType::TYPE_CHAR:
103
0
        return visitor.template apply<PrimitiveType::TYPE_CHAR>(field.template get<TYPE_CHAR>());
104
0
    case PrimitiveType::TYPE_VARCHAR:
105
0
        return visitor.template apply<PrimitiveType::TYPE_VARCHAR>(
106
0
                field.template get<TYPE_VARCHAR>());
107
0
    case PrimitiveType::TYPE_VARBINARY:
108
0
        return visitor.template apply<PrimitiveType::TYPE_VARBINARY>(
109
0
                field.template get<TYPE_VARBINARY>());
110
0
    case PrimitiveType::TYPE_ARRAY:
111
0
        return visitor.template apply<PrimitiveType::TYPE_ARRAY>(field.template get<TYPE_ARRAY>());
112
0
    case PrimitiveType::TYPE_STRUCT:
113
0
        return visitor.template apply<PrimitiveType::TYPE_STRUCT>(
114
0
                field.template get<TYPE_STRUCT>());
115
0
    case PrimitiveType::TYPE_MAP:
116
0
        return visitor.template apply<PrimitiveType::TYPE_MAP>(field.template get<TYPE_MAP>());
117
0
    case PrimitiveType::TYPE_VARIANT:
118
0
        return visitor.template apply<PrimitiveType::TYPE_VARIANT>(
119
0
                field.template get<TYPE_VARIANT>());
120
0
    case PrimitiveType::TYPE_DECIMAL32:
121
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL32>(
122
0
                field.template get<TYPE_DECIMAL32>());
123
0
    case PrimitiveType::TYPE_DECIMAL64:
124
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL64>(
125
0
                field.template get<TYPE_DECIMAL64>());
126
0
    case PrimitiveType::TYPE_DECIMALV2:
127
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMALV2>(
128
0
                field.template get<TYPE_DECIMALV2>());
129
0
    case PrimitiveType::TYPE_DECIMAL128I:
130
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL128I>(
131
0
                field.template get<TYPE_DECIMAL128I>());
132
0
    case PrimitiveType::TYPE_DECIMAL256:
133
0
        return visitor.template apply<PrimitiveType::TYPE_DECIMAL256>(
134
0
                field.template get<TYPE_DECIMAL256>());
135
0
    case PrimitiveType::TYPE_BITMAP:
136
0
        return visitor.template apply<PrimitiveType::TYPE_BITMAP>(
137
0
                field.template get<TYPE_BITMAP>());
138
0
    case PrimitiveType::TYPE_HLL:
139
0
        return visitor.template apply<PrimitiveType::TYPE_HLL>(field.template get<TYPE_HLL>());
140
0
    case PrimitiveType::TYPE_QUANTILE_STATE:
141
0
        return visitor.template apply<PrimitiveType::TYPE_QUANTILE_STATE>(
142
0
                field.template get<TYPE_QUANTILE_STATE>());
143
46.8k
    case PrimitiveType::TYPE_JSONB:
144
46.8k
        return visitor.template apply<PrimitiveType::TYPE_JSONB>(field.template get<TYPE_JSONB>());
145
0
    default:
146
0
        throw doris::Exception(ErrorCode::INTERNAL_ERROR, "Bad type of Field {}",
147
0
                               static_cast<int>(field.get_type()));
148
0
        return {};
149
18.5M
    }
150
18.5M
}
151
152
} // namespace doris