Coverage Report

Created: 2026-06-29 14:22

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/aggregate/aggregate_function_percentile.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 <glog/logging.h>
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include <boost/iterator/iterator_facade.hpp>
25
#include <cmath>
26
#include <cstdint>
27
#include <memory>
28
#include <string>
29
#include <vector>
30
31
#include "core/assert_cast.h"
32
#include "core/column/column.h"
33
#include "core/column/column_array.h"
34
#include "core/column/column_nullable.h"
35
#include "core/column/column_vector.h"
36
#include "core/data_type/data_type_array.h"
37
#include "core/data_type/data_type_nullable.h"
38
#include "core/data_type/data_type_number.h"
39
#include "core/pod_array.h"
40
#include "core/pod_array_fwd.h"
41
#include "core/types.h"
42
#include "exprs/aggregate/aggregate_function.h"
43
#include "util/percentile_util.h"
44
#include "util/tdigest.h"
45
46
namespace doris {
47
48
class Arena;
49
class BufferReadable;
50
51
struct PercentileApproxState {
52
    static constexpr double INIT_QUANTILE = -1.0;
53
1.00k
    PercentileApproxState() = default;
54
1.00k
    ~PercentileApproxState() = default;
55
56
886
    void init(double quantile, float compression = 10000) {
57
886
        if (!init_flag) {
58
            //https://doris.apache.org/zh-CN/sql-reference/sql-functions/aggregate-functions/percentile_approx.html#description
59
            //The compression parameter setting range is [2048, 10000].
60
            //If the value of compression parameter is not specified set, or is outside the range of [2048, 10000],
61
            //will use the default value of 10000
62
448
            if (compression < 2048 || compression > 10000) {
63
0
                compression = 10000;
64
0
            }
65
448
            digest = TDigest::create_unique(compression);
66
448
            check_quantile(quantile);
67
448
            target_quantile = quantile;
68
448
            compressions = compression;
69
448
            init_flag = true;
70
448
        }
71
886
    }
72
73
327
    void write(BufferWritable& buf) const {
74
327
        buf.write_binary(init_flag);
75
327
        if (!init_flag) {
76
0
            return;
77
0
        }
78
79
327
        buf.write_binary(target_quantile);
80
327
        buf.write_binary(compressions);
81
327
        uint32_t serialize_size = digest->serialized_size();
82
327
        std::string result(serialize_size, '0');
83
327
        DCHECK(digest.get() != nullptr);
84
327
        digest->serialize((uint8_t*)result.c_str());
85
86
327
        buf.write_binary(result);
87
327
    }
88
89
288
    void read(BufferReadable& buf) {
90
288
        buf.read_binary(init_flag);
91
288
        if (!init_flag) {
92
0
            return;
93
0
        }
94
95
288
        buf.read_binary(target_quantile);
96
288
        buf.read_binary(compressions);
97
288
        std::string str;
98
288
        buf.read_binary(str);
99
288
        digest = TDigest::create_unique(compressions);
100
288
        digest->unserialize((uint8_t*)str.c_str());
101
288
    }
102
103
366
    double get() const {
104
366
        if (init_flag) {
105
364
            return digest->quantile(static_cast<float>(target_quantile));
106
364
        } else {
107
2
            return std::nan("");
108
2
        }
109
366
    }
110
111
288
    void merge(const PercentileApproxState& rhs) {
112
288
        if (!rhs.init_flag) {
113
0
            return;
114
0
        }
115
288
        if (init_flag) {
116
141
            DCHECK(digest.get() != nullptr);
117
141
            digest->merge(rhs.digest.get());
118
147
        } else {
119
147
            digest = TDigest::create_unique(compressions);
120
147
            digest->merge(rhs.digest.get());
121
147
            init_flag = true;
122
147
        }
123
288
        if (target_quantile == PercentileApproxState::INIT_QUANTILE) {
124
147
            target_quantile = rhs.target_quantile;
125
147
        }
126
288
    }
127
128
742
    void add(double source) { digest->add(static_cast<float>(source)); }
129
130
134
    void add_with_weight(double source, double weight) {
131
        // the weight should be positive num, as have check the value valid use DCHECK_GT(c._weight, 0);
132
134
        if (weight <= 0) {
133
10
            return;
134
10
        }
135
124
        digest->add(static_cast<float>(source), static_cast<float>(weight));
136
124
    }
137
138
155
    void reset() {
139
155
        target_quantile = INIT_QUANTILE;
140
155
        init_flag = false;
141
155
        digest = TDigest::create_unique(compressions);
142
155
    }
143
144
    bool init_flag = false;
145
    std::unique_ptr<TDigest> digest;
146
    double target_quantile = INIT_QUANTILE;
147
    float compressions = 10000;
148
};
149
150
template <typename Derived>
151
class AggregateFunctionPercentileApproxBase
152
        : public IAggregateFunctionDataHelper<PercentileApproxState, Derived> {
153
public:
154
    AggregateFunctionPercentileApproxBase(const DataTypes& argument_types_)
155
842
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
155
753
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
155
37
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
155
30
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
155
22
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
156
157
128
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE8get_nameB5cxx11Ev
Line
Count
Source
157
54
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
157
64
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
157
10
    String get_name() const override { return "percentile_approx"; }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE8get_nameB5cxx11Ev
158
159
155
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5resetEPc
Line
Count
Source
159
50
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5resetEPc
Line
Count
Source
159
102
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5resetEPc
Line
Count
Source
159
3
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5resetEPc
160
161
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
162
288
               Arena&) const override {
163
288
        this->data(place).merge(this->data(rhs));
164
288
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
162
206
               Arena&) const override {
163
206
        this->data(place).merge(this->data(rhs));
164
206
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
162
64
               Arena&) const override {
163
64
        this->data(place).merge(this->data(rhs));
164
64
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
162
8
               Arena&) const override {
163
8
        this->data(place).merge(this->data(rhs));
164
8
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
162
10
               Arena&) const override {
163
10
        this->data(place).merge(this->data(rhs));
164
10
    }
165
166
327
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
167
327
        this->data(place).write(buf);
168
327
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
166
245
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
167
245
        this->data(place).write(buf);
168
245
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
166
64
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
167
64
        this->data(place).write(buf);
168
64
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
166
8
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
167
8
        this->data(place).write(buf);
168
8
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
166
10
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
167
10
        this->data(place).write(buf);
168
10
    }
169
170
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
171
288
                     Arena&) const override {
172
288
        this->data(place).read(buf);
173
288
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
171
206
                     Arena&) const override {
172
206
        this->data(place).read(buf);
173
206
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
171
64
                     Arena&) const override {
172
64
        this->data(place).read(buf);
173
64
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
171
8
                     Arena&) const override {
172
8
        this->data(place).read(buf);
173
8
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
171
10
                     Arena&) const override {
172
10
        this->data(place).read(buf);
173
10
    }
174
};
175
176
class AggregateFunctionPercentileApproxTwoParams final
177
        : public AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>,
178
          public MultiExpression,
179
          public NullableAggregateFunction {
180
public:
181
    AggregateFunctionPercentileApproxTwoParams(const DataTypes& argument_types_)
182
753
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
183
753
                      argument_types_) {}
184
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
185
312
             Arena&) const override {
186
312
        const auto& sources =
187
312
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
188
312
        const auto& quantile =
189
312
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
190
312
        this->data(place).init(quantile.get_element(0));
191
312
        this->data(place).add(sources.get_element(row_num));
192
312
    }
193
194
143
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
195
196
104
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
197
104
        auto& col = assert_cast<ColumnFloat64&>(to);
198
104
        col.get_data().push_back(this->data(place).get());
199
104
    }
200
};
201
202
class AggregateFunctionPercentileApproxThreeParams final
203
        : public AggregateFunctionPercentileApproxBase<
204
                  AggregateFunctionPercentileApproxThreeParams>,
205
          public MultiExpression,
206
          public NullableAggregateFunction {
207
public:
208
    AggregateFunctionPercentileApproxThreeParams(const DataTypes& argument_types_)
209
37
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxThreeParams>(
210
37
                      argument_types_) {}
211
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
212
440
             Arena&) const override {
213
440
        const auto& sources =
214
440
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
215
440
        const auto& quantile =
216
440
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
217
440
        const auto& compression =
218
440
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
219
220
440
        this->data(place).init(quantile.get_element(0),
221
440
                               static_cast<float>(compression.get_element(0)));
222
440
        this->data(place).add(sources.get_element(row_num));
223
440
    }
224
225
120
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
226
227
225
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
228
225
        auto& col = assert_cast<ColumnFloat64&>(to);
229
225
        col.get_data().push_back(this->data(place).get());
230
225
    }
231
};
232
233
class AggregateFunctionPercentileApproxWeightedThreeParams final
234
        : public AggregateFunctionPercentileApproxBase<
235
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
236
          MultiExpression,
237
          NullableAggregateFunction {
238
public:
239
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
240
30
            : AggregateFunctionPercentileApproxBase<
241
30
                      AggregateFunctionPercentileApproxWeightedThreeParams>(argument_types_) {}
242
243
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
244
54
             Arena&) const override {
245
54
        const auto& sources =
246
54
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
247
54
        const auto& weight =
248
54
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
249
54
        const auto& quantile =
250
54
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
251
252
54
        this->data(place).init(quantile.get_element(0));
253
54
        this->data(place).add_with_weight(sources.get_element(row_num),
254
54
                                          weight.get_element(row_num));
255
54
    }
256
257
76
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
258
259
27
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
260
27
        auto& col = assert_cast<ColumnFloat64&>(to);
261
27
        col.get_data().push_back(this->data(place).get());
262
27
    }
263
};
264
265
class AggregateFunctionPercentileApproxWeightedFourParams final
266
        : public AggregateFunctionPercentileApproxBase<
267
                  AggregateFunctionPercentileApproxWeightedFourParams>,
268
          MultiExpression,
269
          NullableAggregateFunction {
270
public:
271
    AggregateFunctionPercentileApproxWeightedFourParams(const DataTypes& argument_types_)
272
22
            : AggregateFunctionPercentileApproxBase<
273
22
                      AggregateFunctionPercentileApproxWeightedFourParams>(argument_types_) {}
274
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
275
80
             Arena&) const override {
276
80
        const auto& sources =
277
80
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
278
80
        const auto& weight =
279
80
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
280
80
        const auto& quantile =
281
80
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
282
80
        const auto& compression =
283
80
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[3]);
284
285
80
        this->data(place).init(quantile.get_element(0),
286
80
                               static_cast<float>(compression.get_element(0)));
287
80
        this->data(place).add_with_weight(sources.get_element(row_num),
288
80
                                          weight.get_element(row_num));
289
80
    }
290
291
43
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
292
293
10
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
294
10
        auto& col = assert_cast<ColumnFloat64&>(to);
295
10
        col.get_data().push_back(this->data(place).get());
296
10
    }
297
};
298
299
template <PrimitiveType T>
300
struct PercentileState {
301
    mutable std::vector<Counts<typename PrimitiveTypeTraits<T>::CppType>> vec_counts;
302
    std::vector<double> vec_quantile {-1};
303
    bool inited_flag = false;
304
305
382
    void write(BufferWritable& buf) const {
306
382
        buf.write_binary(inited_flag);
307
382
        if (!inited_flag) {
308
8
            return;
309
8
        }
310
374
        int size_num = cast_set<int>(vec_quantile.size());
311
374
        buf.write_binary(size_num);
312
678
        for (const auto& quantile : vec_quantile) {
313
678
            buf.write_binary(quantile);
314
678
        }
315
678
        for (auto& counts : vec_counts) {
316
678
            counts.serialize(buf);
317
678
        }
318
374
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Line
Count
Source
305
160
    void write(BufferWritable& buf) const {
306
160
        buf.write_binary(inited_flag);
307
160
        if (!inited_flag) {
308
8
            return;
309
8
        }
310
152
        int size_num = cast_set<int>(vec_quantile.size());
311
152
        buf.write_binary(size_num);
312
456
        for (const auto& quantile : vec_quantile) {
313
456
            buf.write_binary(quantile);
314
456
        }
315
456
        for (auto& counts : vec_counts) {
316
456
            counts.serialize(buf);
317
456
        }
318
152
    }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
305
222
    void write(BufferWritable& buf) const {
306
222
        buf.write_binary(inited_flag);
307
222
        if (!inited_flag) {
308
0
            return;
309
0
        }
310
222
        int size_num = cast_set<int>(vec_quantile.size());
311
222
        buf.write_binary(size_num);
312
222
        for (const auto& quantile : vec_quantile) {
313
222
            buf.write_binary(quantile);
314
222
        }
315
222
        for (auto& counts : vec_counts) {
316
222
            counts.serialize(buf);
317
222
        }
318
222
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
319
320
337
    void read(BufferReadable& buf) {
321
337
        buf.read_binary(inited_flag);
322
337
        if (!inited_flag) {
323
8
            return;
324
8
        }
325
329
        int size_num = 0;
326
329
        buf.read_binary(size_num);
327
329
        double data = 0.0;
328
329
        vec_quantile.clear();
329
884
        for (int i = 0; i < size_num; ++i) {
330
555
            buf.read_binary(data);
331
555
            vec_quantile.emplace_back(data);
332
555
        }
333
329
        vec_counts.clear();
334
329
        vec_counts.resize(size_num);
335
884
        for (int i = 0; i < size_num; ++i) {
336
555
            vec_counts[i].unserialize(buf);
337
555
        }
338
329
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Line
Count
Source
320
121
    void read(BufferReadable& buf) {
321
121
        buf.read_binary(inited_flag);
322
121
        if (!inited_flag) {
323
8
            return;
324
8
        }
325
113
        int size_num = 0;
326
113
        buf.read_binary(size_num);
327
113
        double data = 0.0;
328
113
        vec_quantile.clear();
329
452
        for (int i = 0; i < size_num; ++i) {
330
339
            buf.read_binary(data);
331
339
            vec_quantile.emplace_back(data);
332
339
        }
333
113
        vec_counts.clear();
334
113
        vec_counts.resize(size_num);
335
452
        for (int i = 0; i < size_num; ++i) {
336
339
            vec_counts[i].unserialize(buf);
337
339
        }
338
113
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
320
216
    void read(BufferReadable& buf) {
321
216
        buf.read_binary(inited_flag);
322
216
        if (!inited_flag) {
323
0
            return;
324
0
        }
325
216
        int size_num = 0;
326
216
        buf.read_binary(size_num);
327
216
        double data = 0.0;
328
216
        vec_quantile.clear();
329
432
        for (int i = 0; i < size_num; ++i) {
330
216
            buf.read_binary(data);
331
216
            vec_quantile.emplace_back(data);
332
216
        }
333
216
        vec_counts.clear();
334
216
        vec_counts.resize(size_num);
335
432
        for (int i = 0; i < size_num; ++i) {
336
216
            vec_counts[i].unserialize(buf);
337
216
        }
338
216
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE4readERNS_14BufferReadableE
339
340
    void add(typename PrimitiveTypeTraits<T>::CppType source,
341
222
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
342
222
        if (!inited_flag) {
343
222
            vec_counts.resize(arg_size);
344
222
            vec_quantile.resize(arg_size, -1);
345
222
            inited_flag = true;
346
644
            for (int i = 0; i < arg_size; ++i) {
347
                // throw Exception func call percentile_array(id, [1,0,null])
348
422
                if (null_maps[i]) {
349
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
350
0
                                    "quantiles in func percentile_array should not have null");
351
0
                }
352
422
                check_quantile(quantiles[i]);
353
422
                vec_quantile[i] = quantiles[i];
354
422
            }
355
222
        }
356
644
        for (int i = 0; i < arg_size; ++i) {
357
422
            vec_counts[i].increment(source);
358
422
        }
359
222
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
341
100
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
342
100
        if (!inited_flag) {
343
100
            vec_counts.resize(arg_size);
344
100
            vec_quantile.resize(arg_size, -1);
345
100
            inited_flag = true;
346
400
            for (int i = 0; i < arg_size; ++i) {
347
                // throw Exception func call percentile_array(id, [1,0,null])
348
300
                if (null_maps[i]) {
349
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
350
0
                                    "quantiles in func percentile_array should not have null");
351
0
                }
352
300
                check_quantile(quantiles[i]);
353
300
                vec_quantile[i] = quantiles[i];
354
300
            }
355
100
        }
356
400
        for (int i = 0; i < arg_size; ++i) {
357
300
            vec_counts[i].increment(source);
358
300
        }
359
100
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE3addElRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
341
122
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
342
122
        if (!inited_flag) {
343
122
            vec_counts.resize(arg_size);
344
122
            vec_quantile.resize(arg_size, -1);
345
122
            inited_flag = true;
346
244
            for (int i = 0; i < arg_size; ++i) {
347
                // throw Exception func call percentile_array(id, [1,0,null])
348
122
                if (null_maps[i]) {
349
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
350
0
                                    "quantiles in func percentile_array should not have null");
351
0
                }
352
122
                check_quantile(quantiles[i]);
353
122
                vec_quantile[i] = quantiles[i];
354
122
            }
355
122
        }
356
244
        for (int i = 0; i < arg_size; ++i) {
357
122
            vec_counts[i].increment(source);
358
122
        }
359
122
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE3addEnRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE3addEfRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE3addEdRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
360
361
    void add_batch(const PaddedPODArray<typename PrimitiveTypeTraits<T>::CppType>& source,
362
0
                   const Float64& q) {
363
0
        if (!inited_flag) {
364
0
            inited_flag = true;
365
0
            vec_counts.resize(1);
366
0
            vec_quantile.resize(1);
367
0
            check_quantile(q);
368
0
            vec_quantile[0] = q;
369
0
        }
370
0
        vec_counts[0].increment_batch(source);
371
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE9add_batchERKNS_8PODArrayIaLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE9add_batchERKNS_8PODArrayIsLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE9add_batchERKNS_8PODArrayIiLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE9add_batchERKNS_8PODArrayIlLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE9add_batchERKNS_8PODArrayInLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE9add_batchERKNS_8PODArrayIfLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE9add_batchERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKd
372
373
337
    void merge(const PercentileState& rhs) {
374
337
        if (!rhs.inited_flag) {
375
8
            return;
376
8
        }
377
329
        int size_num = cast_set<int>(rhs.vec_quantile.size());
378
329
        if (!inited_flag) {
379
176
            vec_counts.resize(size_num);
380
176
            vec_quantile.resize(size_num, -1);
381
176
            inited_flag = true;
382
176
        }
383
384
884
        for (int i = 0; i < size_num; ++i) {
385
555
            if (vec_quantile[i] == -1.0) {
386
280
                vec_quantile[i] = rhs.vec_quantile[i];
387
280
            }
388
555
            vec_counts[i].merge(&(rhs.vec_counts[i]));
389
555
        }
390
329
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Line
Count
Source
373
121
    void merge(const PercentileState& rhs) {
374
121
        if (!rhs.inited_flag) {
375
8
            return;
376
8
        }
377
113
        int size_num = cast_set<int>(rhs.vec_quantile.size());
378
113
        if (!inited_flag) {
379
52
            vec_counts.resize(size_num);
380
52
            vec_quantile.resize(size_num, -1);
381
52
            inited_flag = true;
382
52
        }
383
384
452
        for (int i = 0; i < size_num; ++i) {
385
339
            if (vec_quantile[i] == -1.0) {
386
156
                vec_quantile[i] = rhs.vec_quantile[i];
387
156
            }
388
339
            vec_counts[i].merge(&(rhs.vec_counts[i]));
389
339
        }
390
113
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
373
216
    void merge(const PercentileState& rhs) {
374
216
        if (!rhs.inited_flag) {
375
0
            return;
376
0
        }
377
216
        int size_num = cast_set<int>(rhs.vec_quantile.size());
378
216
        if (!inited_flag) {
379
124
            vec_counts.resize(size_num);
380
124
            vec_quantile.resize(size_num, -1);
381
124
            inited_flag = true;
382
124
        }
383
384
432
        for (int i = 0; i < size_num; ++i) {
385
216
            if (vec_quantile[i] == -1.0) {
386
124
                vec_quantile[i] = rhs.vec_quantile[i];
387
124
            }
388
216
            vec_counts[i].merge(&(rhs.vec_counts[i]));
389
216
        }
390
216
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
391
392
97
    void reset() {
393
97
        vec_counts.clear();
394
97
        vec_quantile.clear();
395
97
        inited_flag = false;
396
97
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5resetEv
Line
Count
Source
392
26
    void reset() {
393
26
        vec_counts.clear();
394
26
        vec_quantile.clear();
395
26
        inited_flag = false;
396
26
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
392
71
    void reset() {
393
71
        vec_counts.clear();
394
71
        vec_quantile.clear();
395
71
        inited_flag = false;
396
71
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5resetEv
397
398
24
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
398
24
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE3getEv
399
400
0
    void insert_result_into(IColumn& to) const {
401
0
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
402
0
        for (int i = 0; i < vec_counts.size(); ++i) {
403
0
            column_data.push_back(vec_counts[i].terminate(vec_quantile[i]));
404
0
        }
405
0
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
406
};
407
408
template <PrimitiveType T>
409
struct PercentileExactState {
410
    using ValueType = typename PrimitiveTypeTraits<T>::CppType;
411
    static constexpr size_t bytes_in_arena = 64 - sizeof(PODArray<ValueType>);
412
    using Array = PODArrayWithStackMemory<ValueType, bytes_in_arena>;
413
414
828
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
828
        if (!inited_flag) {
416
301
            _set_single_level(quantile);
417
301
            inited_flag = true;
418
301
        }
419
828
        _append(data, count);
420
828
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16add_single_rangeEPKamd
Line
Count
Source
414
31
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
31
        if (!inited_flag) {
416
6
            _set_single_level(quantile);
417
6
            inited_flag = true;
418
6
        }
419
31
        _append(data, count);
420
31
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16add_single_rangeEPKsmd
Line
Count
Source
414
311
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
311
        if (!inited_flag) {
416
100
            _set_single_level(quantile);
417
100
            inited_flag = true;
418
100
        }
419
311
        _append(data, count);
420
311
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16add_single_rangeEPKimd
Line
Count
Source
414
231
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
231
        if (!inited_flag) {
416
57
            _set_single_level(quantile);
417
57
            inited_flag = true;
418
57
        }
419
231
        _append(data, count);
420
231
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16add_single_rangeEPKlmd
Line
Count
Source
414
197
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
197
        if (!inited_flag) {
416
105
            _set_single_level(quantile);
417
105
            inited_flag = true;
418
105
        }
419
197
        _append(data, count);
420
197
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16add_single_rangeEPKnmd
Line
Count
Source
414
3
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
3
        if (!inited_flag) {
416
2
            _set_single_level(quantile);
417
2
            inited_flag = true;
418
2
        }
419
3
        _append(data, count);
420
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16add_single_rangeEPKfmd
Line
Count
Source
414
6
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
6
        if (!inited_flag) {
416
3
            _set_single_level(quantile);
417
3
            inited_flag = true;
418
3
        }
419
6
        _append(data, count);
420
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16add_single_rangeEPKdmd
Line
Count
Source
414
49
    void add_single_range(const ValueType* data, size_t count, double quantile) {
415
49
        if (!inited_flag) {
416
28
            _set_single_level(quantile);
417
28
            inited_flag = true;
418
28
        }
419
49
        _append(data, count);
420
49
    }
421
422
    void add_many_range(const ValueType* data, size_t count,
423
                        const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
424
670
                        size_t start, int64_t arg_size) {
425
670
        if (!inited_flag) {
426
256
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
256
            inited_flag = true;
428
256
        }
429
670
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
670
        _append(data, count);
433
670
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
15
                        size_t start, int64_t arg_size) {
425
15
        if (!inited_flag) {
426
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
12
            inited_flag = true;
428
12
        }
429
15
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
15
        _append(data, count);
433
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE14add_many_rangeEPKsmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
30
                        size_t start, int64_t arg_size) {
425
30
        if (!inited_flag) {
426
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
16
            inited_flag = true;
428
16
        }
429
30
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
30
        _append(data, count);
433
30
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE14add_many_rangeEPKimRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
485
                        size_t start, int64_t arg_size) {
425
485
        if (!inited_flag) {
426
168
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
168
            inited_flag = true;
428
168
        }
429
485
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
485
        _append(data, count);
433
485
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE14add_many_rangeEPKlmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
33
                        size_t start, int64_t arg_size) {
425
33
        if (!inited_flag) {
426
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
16
            inited_flag = true;
428
16
        }
429
33
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
33
        _append(data, count);
433
33
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE14add_many_rangeEPKnmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
15
                        size_t start, int64_t arg_size) {
425
15
        if (!inited_flag) {
426
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
12
            inited_flag = true;
428
12
        }
429
15
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
15
        _append(data, count);
433
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE14add_many_rangeEPKfmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
3
                        size_t start, int64_t arg_size) {
425
3
        if (!inited_flag) {
426
2
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
2
            inited_flag = true;
428
2
        }
429
3
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
3
        _append(data, count);
433
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE14add_many_rangeEPKdmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
424
89
                        size_t start, int64_t arg_size) {
425
89
        if (!inited_flag) {
426
30
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
427
30
            inited_flag = true;
428
30
        }
429
89
        if (levels.empty()) {
430
0
            return;
431
0
        }
432
89
        _append(data, count);
433
89
    }
434
435
111
    void write(BufferWritable& buf) const {
436
111
        buf.write_binary(inited_flag);
437
111
        if (!inited_flag) {
438
1
            return;
439
1
        }
440
441
110
        levels.write(buf);
442
110
        size_t size = values.size();
443
110
        buf.write_binary(size);
444
110
        if (size > 0) {
445
108
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
108
        }
447
110
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Line
Count
Source
435
4
    void write(BufferWritable& buf) const {
436
4
        buf.write_binary(inited_flag);
437
4
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
4
        levels.write(buf);
442
4
        size_t size = values.size();
443
4
        buf.write_binary(size);
444
4
        if (size > 0) {
445
4
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
4
        }
447
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
Line
Count
Source
435
9
    void write(BufferWritable& buf) const {
436
9
        buf.write_binary(inited_flag);
437
9
        if (!inited_flag) {
438
1
            return;
439
1
        }
440
441
8
        levels.write(buf);
442
8
        size_t size = values.size();
443
8
        buf.write_binary(size);
444
8
        if (size > 0) {
445
8
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
8
        }
447
8
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Line
Count
Source
435
8
    void write(BufferWritable& buf) const {
436
8
        buf.write_binary(inited_flag);
437
8
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
8
        levels.write(buf);
442
8
        size_t size = values.size();
443
8
        buf.write_binary(size);
444
8
        if (size > 0) {
445
8
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
8
        }
447
8
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
435
71
    void write(BufferWritable& buf) const {
436
71
        buf.write_binary(inited_flag);
437
71
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
71
        levels.write(buf);
442
71
        size_t size = values.size();
443
71
        buf.write_binary(size);
444
71
        if (size > 0) {
445
71
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
71
        }
447
71
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Line
Count
Source
435
4
    void write(BufferWritable& buf) const {
436
4
        buf.write_binary(inited_flag);
437
4
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
4
        levels.write(buf);
442
4
        size_t size = values.size();
443
4
        buf.write_binary(size);
444
4
        if (size > 0) {
445
4
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
4
        }
447
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
Line
Count
Source
435
5
    void write(BufferWritable& buf) const {
436
5
        buf.write_binary(inited_flag);
437
5
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
5
        levels.write(buf);
442
5
        size_t size = values.size();
443
5
        buf.write_binary(size);
444
5
        if (size > 0) {
445
5
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
5
        }
447
5
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
Line
Count
Source
435
10
    void write(BufferWritable& buf) const {
436
10
        buf.write_binary(inited_flag);
437
10
        if (!inited_flag) {
438
0
            return;
439
0
        }
440
441
10
        levels.write(buf);
442
10
        size_t size = values.size();
443
10
        buf.write_binary(size);
444
10
        if (size > 0) {
445
8
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
446
8
        }
447
10
    }
448
449
111
    void read(BufferReadable& buf) {
450
111
        reset();
451
111
        buf.read_binary(inited_flag);
452
111
        if (!inited_flag) {
453
1
            return;
454
1
        }
455
456
110
        levels.read(buf);
457
110
        size_t size = 0;
458
110
        buf.read_binary(size);
459
110
        values.resize(size);
460
110
        if (size > 0) {
461
108
            auto raw = buf.read(sizeof(ValueType) * size);
462
108
            memcpy(values.data(), raw.data, raw.size);
463
108
        }
464
110
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Line
Count
Source
449
4
    void read(BufferReadable& buf) {
450
4
        reset();
451
4
        buf.read_binary(inited_flag);
452
4
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
4
        levels.read(buf);
457
4
        size_t size = 0;
458
4
        buf.read_binary(size);
459
4
        values.resize(size);
460
4
        if (size > 0) {
461
4
            auto raw = buf.read(sizeof(ValueType) * size);
462
4
            memcpy(values.data(), raw.data, raw.size);
463
4
        }
464
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
Line
Count
Source
449
9
    void read(BufferReadable& buf) {
450
9
        reset();
451
9
        buf.read_binary(inited_flag);
452
9
        if (!inited_flag) {
453
1
            return;
454
1
        }
455
456
8
        levels.read(buf);
457
8
        size_t size = 0;
458
8
        buf.read_binary(size);
459
8
        values.resize(size);
460
8
        if (size > 0) {
461
8
            auto raw = buf.read(sizeof(ValueType) * size);
462
8
            memcpy(values.data(), raw.data, raw.size);
463
8
        }
464
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Line
Count
Source
449
8
    void read(BufferReadable& buf) {
450
8
        reset();
451
8
        buf.read_binary(inited_flag);
452
8
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
8
        levels.read(buf);
457
8
        size_t size = 0;
458
8
        buf.read_binary(size);
459
8
        values.resize(size);
460
8
        if (size > 0) {
461
8
            auto raw = buf.read(sizeof(ValueType) * size);
462
8
            memcpy(values.data(), raw.data, raw.size);
463
8
        }
464
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
449
71
    void read(BufferReadable& buf) {
450
71
        reset();
451
71
        buf.read_binary(inited_flag);
452
71
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
71
        levels.read(buf);
457
71
        size_t size = 0;
458
71
        buf.read_binary(size);
459
71
        values.resize(size);
460
71
        if (size > 0) {
461
71
            auto raw = buf.read(sizeof(ValueType) * size);
462
71
            memcpy(values.data(), raw.data, raw.size);
463
71
        }
464
71
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE4readERNS_14BufferReadableE
Line
Count
Source
449
4
    void read(BufferReadable& buf) {
450
4
        reset();
451
4
        buf.read_binary(inited_flag);
452
4
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
4
        levels.read(buf);
457
4
        size_t size = 0;
458
4
        buf.read_binary(size);
459
4
        values.resize(size);
460
4
        if (size > 0) {
461
4
            auto raw = buf.read(sizeof(ValueType) * size);
462
4
            memcpy(values.data(), raw.data, raw.size);
463
4
        }
464
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE4readERNS_14BufferReadableE
Line
Count
Source
449
5
    void read(BufferReadable& buf) {
450
5
        reset();
451
5
        buf.read_binary(inited_flag);
452
5
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
5
        levels.read(buf);
457
5
        size_t size = 0;
458
5
        buf.read_binary(size);
459
5
        values.resize(size);
460
5
        if (size > 0) {
461
5
            auto raw = buf.read(sizeof(ValueType) * size);
462
5
            memcpy(values.data(), raw.data, raw.size);
463
5
        }
464
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE4readERNS_14BufferReadableE
Line
Count
Source
449
10
    void read(BufferReadable& buf) {
450
10
        reset();
451
10
        buf.read_binary(inited_flag);
452
10
        if (!inited_flag) {
453
0
            return;
454
0
        }
455
456
10
        levels.read(buf);
457
10
        size_t size = 0;
458
10
        buf.read_binary(size);
459
10
        values.resize(size);
460
10
        if (size > 0) {
461
8
            auto raw = buf.read(sizeof(ValueType) * size);
462
8
            memcpy(values.data(), raw.data, raw.size);
463
8
        }
464
10
    }
465
466
111
    void merge(const PercentileExactState& rhs) {
467
111
        if (!rhs.inited_flag) {
468
1
            return;
469
1
        }
470
471
110
        if (!inited_flag) {
472
55
            levels = rhs.levels;
473
55
            inited_flag = true;
474
55
        } else {
475
55
            levels.merge(rhs.levels);
476
55
        }
477
110
        _append(rhs.values.data(), rhs.values.size());
478
110
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Line
Count
Source
466
4
    void merge(const PercentileExactState& rhs) {
467
4
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
4
        if (!inited_flag) {
472
2
            levels = rhs.levels;
473
2
            inited_flag = true;
474
2
        } else {
475
2
            levels.merge(rhs.levels);
476
2
        }
477
4
        _append(rhs.values.data(), rhs.values.size());
478
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
Line
Count
Source
466
9
    void merge(const PercentileExactState& rhs) {
467
9
        if (!rhs.inited_flag) {
468
1
            return;
469
1
        }
470
471
8
        if (!inited_flag) {
472
3
            levels = rhs.levels;
473
3
            inited_flag = true;
474
5
        } else {
475
5
            levels.merge(rhs.levels);
476
5
        }
477
8
        _append(rhs.values.data(), rhs.values.size());
478
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Line
Count
Source
466
8
    void merge(const PercentileExactState& rhs) {
467
8
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
8
        if (!inited_flag) {
472
6
            levels = rhs.levels;
473
6
            inited_flag = true;
474
6
        } else {
475
2
            levels.merge(rhs.levels);
476
2
        }
477
8
        _append(rhs.values.data(), rhs.values.size());
478
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
466
71
    void merge(const PercentileExactState& rhs) {
467
71
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
71
        if (!inited_flag) {
472
31
            levels = rhs.levels;
473
31
            inited_flag = true;
474
40
        } else {
475
40
            levels.merge(rhs.levels);
476
40
        }
477
71
        _append(rhs.values.data(), rhs.values.size());
478
71
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Line
Count
Source
466
4
    void merge(const PercentileExactState& rhs) {
467
4
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
4
        if (!inited_flag) {
472
2
            levels = rhs.levels;
473
2
            inited_flag = true;
474
2
        } else {
475
2
            levels.merge(rhs.levels);
476
2
        }
477
4
        _append(rhs.values.data(), rhs.values.size());
478
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
Line
Count
Source
466
5
    void merge(const PercentileExactState& rhs) {
467
5
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
5
        if (!inited_flag) {
472
3
            levels = rhs.levels;
473
3
            inited_flag = true;
474
3
        } else {
475
2
            levels.merge(rhs.levels);
476
2
        }
477
5
        _append(rhs.values.data(), rhs.values.size());
478
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
Line
Count
Source
466
10
    void merge(const PercentileExactState& rhs) {
467
10
        if (!rhs.inited_flag) {
468
0
            return;
469
0
        }
470
471
10
        if (!inited_flag) {
472
8
            levels = rhs.levels;
473
8
            inited_flag = true;
474
8
        } else {
475
2
            levels.merge(rhs.levels);
476
2
        }
477
10
        _append(rhs.values.data(), rhs.values.size());
478
10
    }
479
480
228
    void reset() {
481
228
        values.clear();
482
228
        levels.clear();
483
228
        inited_flag = false;
484
228
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5resetEv
Line
Count
Source
480
4
    void reset() {
481
4
        values.clear();
482
4
        levels.clear();
483
4
        inited_flag = false;
484
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5resetEv
Line
Count
Source
480
111
    void reset() {
481
111
        values.clear();
482
111
        levels.clear();
483
111
        inited_flag = false;
484
111
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5resetEv
Line
Count
Source
480
17
    void reset() {
481
17
        values.clear();
482
17
        levels.clear();
483
17
        inited_flag = false;
484
17
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
480
71
    void reset() {
481
71
        values.clear();
482
71
        levels.clear();
483
71
        inited_flag = false;
484
71
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5resetEv
Line
Count
Source
480
4
    void reset() {
481
4
        values.clear();
482
4
        levels.clear();
483
4
        inited_flag = false;
484
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5resetEv
Line
Count
Source
480
5
    void reset() {
481
5
        values.clear();
482
5
        levels.clear();
483
5
        inited_flag = false;
484
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5resetEv
Line
Count
Source
480
16
    void reset() {
481
16
        values.clear();
482
16
        levels.clear();
483
16
        inited_flag = false;
484
16
    }
485
486
366
    double get() const {
487
366
        if (!inited_flag || levels.empty() || values.empty()) {
488
3
            return std::numeric_limits<double>::quiet_NaN();
489
3
        }
490
491
366
        DCHECK_EQ(levels.quantiles.size(), 1);
492
363
        return _get_result(levels.quantiles[0]);
493
366
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE3getEv
Line
Count
Source
486
30
    double get() const {
487
30
        if (!inited_flag || levels.empty() || values.empty()) {
488
1
            return std::numeric_limits<double>::quiet_NaN();
489
1
        }
490
491
30
        DCHECK_EQ(levels.quantiles.size(), 1);
492
29
        return _get_result(levels.quantiles[0]);
493
30
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE3getEv
Line
Count
Source
486
177
    double get() const {
487
177
        if (!inited_flag || levels.empty() || values.empty()) {
488
0
            return std::numeric_limits<double>::quiet_NaN();
489
0
        }
490
491
177
        DCHECK_EQ(levels.quantiles.size(), 1);
492
177
        return _get_result(levels.quantiles[0]);
493
177
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE3getEv
Line
Count
Source
486
54
    double get() const {
487
54
        if (!inited_flag || levels.empty() || values.empty()) {
488
0
            return std::numeric_limits<double>::quiet_NaN();
489
0
        }
490
491
54
        DCHECK_EQ(levels.quantiles.size(), 1);
492
54
        return _get_result(levels.quantiles[0]);
493
54
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
486
67
    double get() const {
487
67
        if (!inited_flag || levels.empty() || values.empty()) {
488
1
            return std::numeric_limits<double>::quiet_NaN();
489
1
        }
490
491
67
        DCHECK_EQ(levels.quantiles.size(), 1);
492
66
        return _get_result(levels.quantiles[0]);
493
67
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE3getEv
Line
Count
Source
486
1
    double get() const {
487
1
        if (!inited_flag || levels.empty() || values.empty()) {
488
0
            return std::numeric_limits<double>::quiet_NaN();
489
0
        }
490
491
1
        DCHECK_EQ(levels.quantiles.size(), 1);
492
1
        return _get_result(levels.quantiles[0]);
493
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE3getEv
Line
Count
Source
486
2
    double get() const {
487
2
        if (!inited_flag || levels.empty() || values.empty()) {
488
0
            return std::numeric_limits<double>::quiet_NaN();
489
0
        }
490
491
2
        DCHECK_EQ(levels.quantiles.size(), 1);
492
2
        return _get_result(levels.quantiles[0]);
493
2
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE3getEv
Line
Count
Source
486
35
    double get() const {
487
35
        if (!inited_flag || levels.empty() || values.empty()) {
488
1
            return std::numeric_limits<double>::quiet_NaN();
489
1
        }
490
491
35
        DCHECK_EQ(levels.quantiles.size(), 1);
492
34
        return _get_result(levels.quantiles[0]);
493
35
    }
494
495
267
    void insert_result_into(IColumn& to) const {
496
267
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
267
        if (!inited_flag || levels.empty()) {
498
10
            return;
499
10
        }
500
501
257
        size_t old_size = column_data.size();
502
257
        size_t size = levels.quantiles.size();
503
257
        column_data.resize(old_size + size);
504
257
        auto* result = column_data.data() + old_size;
505
506
257
        if (values.empty()) {
507
4
            for (size_t i = 0; i < size; ++i) {
508
3
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
3
            }
510
1
            return;
511
1
        }
512
513
256
        if (values.size() == 1) {
514
452
            for (size_t i = 0; i < size; ++i) {
515
320
                result[i] = static_cast<double>(values.front());
516
320
            }
517
132
            return;
518
132
        }
519
520
124
        size_t prev_index = 0;
521
124
        const auto& quantiles = levels.quantiles;
522
124
        const auto& permutation = levels.get_permutation();
523
421
        for (size_t i = 0; i < size; ++i) {
524
297
            auto level_index = permutation[i];
525
297
            auto level = quantiles[level_index];
526
297
            double u = static_cast<double>(values.size() - 1) * level;
527
297
            auto index = static_cast<size_t>(u);
528
529
297
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
297
            } else {
533
297
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
297
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
297
                result[level_index] =
536
297
                        static_cast<double>(values[index]) +
537
297
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
297
                                                            static_cast<double>(values[index]));
539
297
                prev_index = index;
540
297
            }
541
297
        }
542
124
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
12
    void insert_result_into(IColumn& to) const {
496
12
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
12
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
11
        size_t old_size = column_data.size();
502
11
        size_t size = levels.quantiles.size();
503
11
        column_data.resize(old_size + size);
504
11
        auto* result = column_data.data() + old_size;
505
506
11
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
11
        if (values.size() == 1) {
514
32
            for (size_t i = 0; i < size; ++i) {
515
24
                result[i] = static_cast<double>(values.front());
516
24
            }
517
8
            return;
518
8
        }
519
520
3
        size_t prev_index = 0;
521
3
        const auto& quantiles = levels.quantiles;
522
3
        const auto& permutation = levels.get_permutation();
523
11
        for (size_t i = 0; i < size; ++i) {
524
8
            auto level_index = permutation[i];
525
8
            auto level = quantiles[level_index];
526
8
            double u = static_cast<double>(values.size() - 1) * level;
527
8
            auto index = static_cast<size_t>(u);
528
529
8
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
8
            } else {
533
8
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
8
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
8
                result[level_index] =
536
8
                        static_cast<double>(values[index]) +
537
8
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
8
                                                            static_cast<double>(values[index]));
539
8
                prev_index = index;
540
8
            }
541
8
        }
542
3
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
13
    void insert_result_into(IColumn& to) const {
496
13
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
13
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
12
        size_t old_size = column_data.size();
502
12
        size_t size = levels.quantiles.size();
503
12
        column_data.resize(old_size + size);
504
12
        auto* result = column_data.data() + old_size;
505
506
12
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
12
        if (values.size() == 1) {
514
32
            for (size_t i = 0; i < size; ++i) {
515
24
                result[i] = static_cast<double>(values.front());
516
24
            }
517
8
            return;
518
8
        }
519
520
4
        size_t prev_index = 0;
521
4
        const auto& quantiles = levels.quantiles;
522
4
        const auto& permutation = levels.get_permutation();
523
15
        for (size_t i = 0; i < size; ++i) {
524
11
            auto level_index = permutation[i];
525
11
            auto level = quantiles[level_index];
526
11
            double u = static_cast<double>(values.size() - 1) * level;
527
11
            auto index = static_cast<size_t>(u);
528
529
11
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
11
            } else {
533
11
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
11
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
11
                result[level_index] =
536
11
                        static_cast<double>(values[index]) +
537
11
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
11
                                                            static_cast<double>(values[index]));
539
11
                prev_index = index;
540
11
            }
541
11
        }
542
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
171
    void insert_result_into(IColumn& to) const {
496
171
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
171
        if (!inited_flag || levels.empty()) {
498
4
            return;
499
4
        }
500
501
167
        size_t old_size = column_data.size();
502
167
        size_t size = levels.quantiles.size();
503
167
        column_data.resize(old_size + size);
504
167
        auto* result = column_data.data() + old_size;
505
506
167
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
167
        if (values.size() == 1) {
514
297
            for (size_t i = 0; i < size; ++i) {
515
206
                result[i] = static_cast<double>(values.front());
516
206
            }
517
91
            return;
518
91
        }
519
520
76
        size_t prev_index = 0;
521
76
        const auto& quantiles = levels.quantiles;
522
76
        const auto& permutation = levels.get_permutation();
523
245
        for (size_t i = 0; i < size; ++i) {
524
169
            auto level_index = permutation[i];
525
169
            auto level = quantiles[level_index];
526
169
            double u = static_cast<double>(values.size() - 1) * level;
527
169
            auto index = static_cast<size_t>(u);
528
529
169
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
169
            } else {
533
169
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
169
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
169
                result[level_index] =
536
169
                        static_cast<double>(values[index]) +
537
169
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
169
                                                            static_cast<double>(values[index]));
539
169
                prev_index = index;
540
169
            }
541
169
        }
542
76
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
13
    void insert_result_into(IColumn& to) const {
496
13
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
13
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
12
        size_t old_size = column_data.size();
502
12
        size_t size = levels.quantiles.size();
503
12
        column_data.resize(old_size + size);
504
12
        auto* result = column_data.data() + old_size;
505
506
12
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
12
        if (values.size() == 1) {
514
32
            for (size_t i = 0; i < size; ++i) {
515
24
                result[i] = static_cast<double>(values.front());
516
24
            }
517
8
            return;
518
8
        }
519
520
4
        size_t prev_index = 0;
521
4
        const auto& quantiles = levels.quantiles;
522
4
        const auto& permutation = levels.get_permutation();
523
15
        for (size_t i = 0; i < size; ++i) {
524
11
            auto level_index = permutation[i];
525
11
            auto level = quantiles[level_index];
526
11
            double u = static_cast<double>(values.size() - 1) * level;
527
11
            auto index = static_cast<size_t>(u);
528
529
11
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
11
            } else {
533
11
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
11
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
11
                result[level_index] =
536
11
                        static_cast<double>(values[index]) +
537
11
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
11
                                                            static_cast<double>(values[index]));
539
11
                prev_index = index;
540
11
            }
541
11
        }
542
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
12
    void insert_result_into(IColumn& to) const {
496
12
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
12
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
11
        size_t old_size = column_data.size();
502
11
        size_t size = levels.quantiles.size();
503
11
        column_data.resize(old_size + size);
504
11
        auto* result = column_data.data() + old_size;
505
506
11
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
11
        if (values.size() == 1) {
514
32
            for (size_t i = 0; i < size; ++i) {
515
24
                result[i] = static_cast<double>(values.front());
516
24
            }
517
8
            return;
518
8
        }
519
520
3
        size_t prev_index = 0;
521
3
        const auto& quantiles = levels.quantiles;
522
3
        const auto& permutation = levels.get_permutation();
523
11
        for (size_t i = 0; i < size; ++i) {
524
8
            auto level_index = permutation[i];
525
8
            auto level = quantiles[level_index];
526
8
            double u = static_cast<double>(values.size() - 1) * level;
527
8
            auto index = static_cast<size_t>(u);
528
529
8
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
8
            } else {
533
8
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
8
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
8
                result[level_index] =
536
8
                        static_cast<double>(values[index]) +
537
8
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
8
                                                            static_cast<double>(values[index]));
539
8
                prev_index = index;
540
8
            }
541
8
        }
542
3
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
2
    void insert_result_into(IColumn& to) const {
496
2
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
2
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
1
        size_t old_size = column_data.size();
502
1
        size_t size = levels.quantiles.size();
503
1
        column_data.resize(old_size + size);
504
1
        auto* result = column_data.data() + old_size;
505
506
1
        if (values.empty()) {
507
0
            for (size_t i = 0; i < size; ++i) {
508
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
0
            }
510
0
            return;
511
0
        }
512
513
1
        if (values.size() == 1) {
514
0
            for (size_t i = 0; i < size; ++i) {
515
0
                result[i] = static_cast<double>(values.front());
516
0
            }
517
0
            return;
518
0
        }
519
520
1
        size_t prev_index = 0;
521
1
        const auto& quantiles = levels.quantiles;
522
1
        const auto& permutation = levels.get_permutation();
523
3
        for (size_t i = 0; i < size; ++i) {
524
2
            auto level_index = permutation[i];
525
2
            auto level = quantiles[level_index];
526
2
            double u = static_cast<double>(values.size() - 1) * level;
527
2
            auto index = static_cast<size_t>(u);
528
529
2
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
2
            } else {
533
2
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
2
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
2
                result[level_index] =
536
2
                        static_cast<double>(values[index]) +
537
2
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
2
                                                            static_cast<double>(values[index]));
539
2
                prev_index = index;
540
2
            }
541
2
        }
542
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
495
44
    void insert_result_into(IColumn& to) const {
496
44
        auto& column_data = assert_cast<ColumnFloat64&>(to).get_data();
497
44
        if (!inited_flag || levels.empty()) {
498
1
            return;
499
1
        }
500
501
43
        size_t old_size = column_data.size();
502
43
        size_t size = levels.quantiles.size();
503
43
        column_data.resize(old_size + size);
504
43
        auto* result = column_data.data() + old_size;
505
506
43
        if (values.empty()) {
507
4
            for (size_t i = 0; i < size; ++i) {
508
3
                result[i] = std::numeric_limits<double>::quiet_NaN();
509
3
            }
510
1
            return;
511
1
        }
512
513
42
        if (values.size() == 1) {
514
27
            for (size_t i = 0; i < size; ++i) {
515
18
                result[i] = static_cast<double>(values.front());
516
18
            }
517
9
            return;
518
9
        }
519
520
33
        size_t prev_index = 0;
521
33
        const auto& quantiles = levels.quantiles;
522
33
        const auto& permutation = levels.get_permutation();
523
121
        for (size_t i = 0; i < size; ++i) {
524
88
            auto level_index = permutation[i];
525
88
            auto level = quantiles[level_index];
526
88
            double u = static_cast<double>(values.size() - 1) * level;
527
88
            auto index = static_cast<size_t>(u);
528
529
88
            if (index + 1 >= values.size()) {
530
0
                result[level_index] =
531
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
532
88
            } else {
533
88
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
534
88
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
535
88
                result[level_index] =
536
88
                        static_cast<double>(values[index]) +
537
88
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
538
88
                                                            static_cast<double>(values[index]));
539
88
                prev_index = index;
540
88
            }
541
88
        }
542
33
    }
543
544
private:
545
301
    void _set_single_level(double quantile) {
546
301
        DCHECK(levels.empty());
547
301
        check_quantile(quantile);
548
301
        levels.quantiles.push_back(quantile);
549
301
        levels.permutation.push_back(0);
550
301
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE17_set_single_levelEd
Line
Count
Source
545
6
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
6
        check_quantile(quantile);
548
6
        levels.quantiles.push_back(quantile);
549
6
        levels.permutation.push_back(0);
550
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE17_set_single_levelEd
Line
Count
Source
545
100
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
100
        check_quantile(quantile);
548
100
        levels.quantiles.push_back(quantile);
549
100
        levels.permutation.push_back(0);
550
100
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE17_set_single_levelEd
Line
Count
Source
545
57
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
57
        check_quantile(quantile);
548
57
        levels.quantiles.push_back(quantile);
549
57
        levels.permutation.push_back(0);
550
57
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE17_set_single_levelEd
Line
Count
Source
545
105
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
105
        check_quantile(quantile);
548
105
        levels.quantiles.push_back(quantile);
549
105
        levels.permutation.push_back(0);
550
105
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE17_set_single_levelEd
Line
Count
Source
545
2
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
2
        check_quantile(quantile);
548
2
        levels.quantiles.push_back(quantile);
549
2
        levels.permutation.push_back(0);
550
2
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE17_set_single_levelEd
Line
Count
Source
545
3
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
3
        check_quantile(quantile);
548
3
        levels.quantiles.push_back(quantile);
549
3
        levels.permutation.push_back(0);
550
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE17_set_single_levelEd
Line
Count
Source
545
28
    void _set_single_level(double quantile) {
546
        DCHECK(levels.empty());
547
28
        check_quantile(quantile);
548
28
        levels.quantiles.push_back(quantile);
549
28
        levels.permutation.push_back(0);
550
28
    }
551
552
    void _set_many_levels(const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
553
256
                          size_t start, int64_t arg_size) {
554
256
        DCHECK(levels.empty());
555
256
        size_t size = cast_set<size_t>(arg_size);
556
256
        levels.quantiles.resize(size);
557
256
        levels.permutation.resize(size);
558
863
        for (size_t i = 0; i < size; ++i) {
559
608
            if (null_maps[start + i]) {
560
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
1
                                "quantiles in func percentile_array should not have null");
562
1
            }
563
607
            check_quantile(quantiles_data[start + i]);
564
607
            levels.quantiles[i] = quantiles_data[start + i];
565
607
            levels.permutation[i] = i;
566
607
        }
567
256
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
12
                          size_t start, int64_t arg_size) {
554
12
        DCHECK(levels.empty());
555
12
        size_t size = cast_set<size_t>(arg_size);
556
12
        levels.quantiles.resize(size);
557
12
        levels.permutation.resize(size);
558
46
        for (size_t i = 0; i < size; ++i) {
559
34
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
34
            check_quantile(quantiles_data[start + i]);
564
34
            levels.quantiles[i] = quantiles_data[start + i];
565
34
            levels.permutation[i] = i;
566
34
        }
567
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
16
                          size_t start, int64_t arg_size) {
554
16
        DCHECK(levels.empty());
555
16
        size_t size = cast_set<size_t>(arg_size);
556
16
        levels.quantiles.resize(size);
557
16
        levels.permutation.resize(size);
558
62
        for (size_t i = 0; i < size; ++i) {
559
46
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
46
            check_quantile(quantiles_data[start + i]);
564
46
            levels.quantiles[i] = quantiles_data[start + i];
565
46
            levels.permutation[i] = i;
566
46
        }
567
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
168
                          size_t start, int64_t arg_size) {
554
168
        DCHECK(levels.empty());
555
168
        size_t size = cast_set<size_t>(arg_size);
556
168
        levels.quantiles.resize(size);
557
168
        levels.permutation.resize(size);
558
545
        for (size_t i = 0; i < size; ++i) {
559
377
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
377
            check_quantile(quantiles_data[start + i]);
564
377
            levels.quantiles[i] = quantiles_data[start + i];
565
377
            levels.permutation[i] = i;
566
377
        }
567
168
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
16
                          size_t start, int64_t arg_size) {
554
16
        DCHECK(levels.empty());
555
16
        size_t size = cast_set<size_t>(arg_size);
556
16
        levels.quantiles.resize(size);
557
16
        levels.permutation.resize(size);
558
59
        for (size_t i = 0; i < size; ++i) {
559
44
            if (null_maps[start + i]) {
560
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
1
                                "quantiles in func percentile_array should not have null");
562
1
            }
563
43
            check_quantile(quantiles_data[start + i]);
564
43
            levels.quantiles[i] = quantiles_data[start + i];
565
43
            levels.permutation[i] = i;
566
43
        }
567
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
12
                          size_t start, int64_t arg_size) {
554
12
        DCHECK(levels.empty());
555
12
        size_t size = cast_set<size_t>(arg_size);
556
12
        levels.quantiles.resize(size);
557
12
        levels.permutation.resize(size);
558
46
        for (size_t i = 0; i < size; ++i) {
559
34
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
34
            check_quantile(quantiles_data[start + i]);
564
34
            levels.quantiles[i] = quantiles_data[start + i];
565
34
            levels.permutation[i] = i;
566
34
        }
567
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
2
                          size_t start, int64_t arg_size) {
554
2
        DCHECK(levels.empty());
555
2
        size_t size = cast_set<size_t>(arg_size);
556
2
        levels.quantiles.resize(size);
557
2
        levels.permutation.resize(size);
558
6
        for (size_t i = 0; i < size; ++i) {
559
4
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
4
            check_quantile(quantiles_data[start + i]);
564
4
            levels.quantiles[i] = quantiles_data[start + i];
565
4
            levels.permutation[i] = i;
566
4
        }
567
2
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
553
30
                          size_t start, int64_t arg_size) {
554
30
        DCHECK(levels.empty());
555
30
        size_t size = cast_set<size_t>(arg_size);
556
30
        levels.quantiles.resize(size);
557
30
        levels.permutation.resize(size);
558
99
        for (size_t i = 0; i < size; ++i) {
559
69
            if (null_maps[start + i]) {
560
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
561
0
                                "quantiles in func percentile_array should not have null");
562
0
            }
563
69
            check_quantile(quantiles_data[start + i]);
564
69
            levels.quantiles[i] = quantiles_data[start + i];
565
69
            levels.permutation[i] = i;
566
69
        }
567
30
    }
568
569
1.59k
    void _append(const ValueType* data, size_t count) {
570
1.59k
        if (count == 0) {
571
2
            return;
572
2
        }
573
1.59k
        values.reserve(values.size() + count);
574
1.59k
        if constexpr (std::is_floating_point_v<ValueType>) {
575
329
            for (size_t i = 0; i < count; ++i) {
576
175
                if (!std::isnan(data[i])) {
577
168
                    values.push_back(data[i]);
578
168
                }
579
175
            }
580
1.44k
        } else {
581
1.44k
            values.insert_assume_reserved(data, data + count);
582
1.44k
        }
583
1.59k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE7_appendEPKam
Line
Count
Source
569
50
    void _append(const ValueType* data, size_t count) {
570
50
        if (count == 0) {
571
0
            return;
572
0
        }
573
50
        values.reserve(values.size() + count);
574
        if constexpr (std::is_floating_point_v<ValueType>) {
575
            for (size_t i = 0; i < count; ++i) {
576
                if (!std::isnan(data[i])) {
577
                    values.push_back(data[i]);
578
                }
579
            }
580
50
        } else {
581
50
            values.insert_assume_reserved(data, data + count);
582
50
        }
583
50
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE7_appendEPKsm
Line
Count
Source
569
349
    void _append(const ValueType* data, size_t count) {
570
349
        if (count == 0) {
571
0
            return;
572
0
        }
573
349
        values.reserve(values.size() + count);
574
        if constexpr (std::is_floating_point_v<ValueType>) {
575
            for (size_t i = 0; i < count; ++i) {
576
                if (!std::isnan(data[i])) {
577
                    values.push_back(data[i]);
578
                }
579
            }
580
349
        } else {
581
349
            values.insert_assume_reserved(data, data + count);
582
349
        }
583
349
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE7_appendEPKim
Line
Count
Source
569
722
    void _append(const ValueType* data, size_t count) {
570
722
        if (count == 0) {
571
0
            return;
572
0
        }
573
722
        values.reserve(values.size() + count);
574
        if constexpr (std::is_floating_point_v<ValueType>) {
575
            for (size_t i = 0; i < count; ++i) {
576
                if (!std::isnan(data[i])) {
577
                    values.push_back(data[i]);
578
                }
579
            }
580
722
        } else {
581
722
            values.insert_assume_reserved(data, data + count);
582
722
        }
583
722
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE7_appendEPKlm
Line
Count
Source
569
298
    void _append(const ValueType* data, size_t count) {
570
298
        if (count == 0) {
571
0
            return;
572
0
        }
573
298
        values.reserve(values.size() + count);
574
        if constexpr (std::is_floating_point_v<ValueType>) {
575
            for (size_t i = 0; i < count; ++i) {
576
                if (!std::isnan(data[i])) {
577
                    values.push_back(data[i]);
578
                }
579
            }
580
298
        } else {
581
298
            values.insert_assume_reserved(data, data + count);
582
298
        }
583
298
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE7_appendEPKnm
Line
Count
Source
569
22
    void _append(const ValueType* data, size_t count) {
570
22
        if (count == 0) {
571
0
            return;
572
0
        }
573
22
        values.reserve(values.size() + count);
574
        if constexpr (std::is_floating_point_v<ValueType>) {
575
            for (size_t i = 0; i < count; ++i) {
576
                if (!std::isnan(data[i])) {
577
                    values.push_back(data[i]);
578
                }
579
            }
580
22
        } else {
581
22
            values.insert_assume_reserved(data, data + count);
582
22
        }
583
22
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE7_appendEPKfm
Line
Count
Source
569
14
    void _append(const ValueType* data, size_t count) {
570
14
        if (count == 0) {
571
0
            return;
572
0
        }
573
14
        values.reserve(values.size() + count);
574
14
        if constexpr (std::is_floating_point_v<ValueType>) {
575
31
            for (size_t i = 0; i < count; ++i) {
576
17
                if (!std::isnan(data[i])) {
577
16
                    values.push_back(data[i]);
578
16
                }
579
17
            }
580
        } else {
581
            values.insert_assume_reserved(data, data + count);
582
        }
583
14
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE7_appendEPKdm
Line
Count
Source
569
142
    void _append(const ValueType* data, size_t count) {
570
142
        if (count == 0) {
571
2
            return;
572
2
        }
573
140
        values.reserve(values.size() + count);
574
140
        if constexpr (std::is_floating_point_v<ValueType>) {
575
298
            for (size_t i = 0; i < count; ++i) {
576
158
                if (!std::isnan(data[i])) {
577
152
                    values.push_back(data[i]);
578
152
                }
579
158
            }
580
        } else {
581
            values.insert_assume_reserved(data, data + count);
582
        }
583
140
    }
584
585
363
    double _get_result(double quantile) const {
586
363
        if (values.size() == 1) {
587
114
            return static_cast<double>(values.front());
588
114
        }
589
590
249
        double u = static_cast<double>(values.size() - 1) * quantile;
591
249
        auto index = static_cast<size_t>(u);
592
593
249
        if (index + 1 >= values.size()) {
594
6
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
6
        }
596
597
243
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
243
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
243
        return static_cast<double>(values[index]) +
601
243
               (u - static_cast<double>(index)) *
602
243
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
249
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE11_get_resultEd
Line
Count
Source
585
29
    double _get_result(double quantile) const {
586
29
        if (values.size() == 1) {
587
4
            return static_cast<double>(values.front());
588
4
        }
589
590
25
        double u = static_cast<double>(values.size() - 1) * quantile;
591
25
        auto index = static_cast<size_t>(u);
592
593
25
        if (index + 1 >= values.size()) {
594
6
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
6
        }
596
597
19
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
19
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
19
        return static_cast<double>(values[index]) +
601
19
               (u - static_cast<double>(index)) *
602
19
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
25
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE11_get_resultEd
Line
Count
Source
585
177
    double _get_result(double quantile) const {
586
177
        if (values.size() == 1) {
587
42
            return static_cast<double>(values.front());
588
42
        }
589
590
135
        double u = static_cast<double>(values.size() - 1) * quantile;
591
135
        auto index = static_cast<size_t>(u);
592
593
135
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
135
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
135
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
135
        return static_cast<double>(values[index]) +
601
135
               (u - static_cast<double>(index)) *
602
135
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
135
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE11_get_resultEd
Line
Count
Source
585
54
    double _get_result(double quantile) const {
586
54
        if (values.size() == 1) {
587
21
            return static_cast<double>(values.front());
588
21
        }
589
590
33
        double u = static_cast<double>(values.size() - 1) * quantile;
591
33
        auto index = static_cast<size_t>(u);
592
593
33
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
33
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
33
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
33
        return static_cast<double>(values[index]) +
601
33
               (u - static_cast<double>(index)) *
602
33
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
33
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE11_get_resultEd
Line
Count
Source
585
66
    double _get_result(double quantile) const {
586
66
        if (values.size() == 1) {
587
35
            return static_cast<double>(values.front());
588
35
        }
589
590
31
        double u = static_cast<double>(values.size() - 1) * quantile;
591
31
        auto index = static_cast<size_t>(u);
592
593
31
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
31
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
31
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
31
        return static_cast<double>(values[index]) +
601
31
               (u - static_cast<double>(index)) *
602
31
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
31
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE11_get_resultEd
Line
Count
Source
585
1
    double _get_result(double quantile) const {
586
1
        if (values.size() == 1) {
587
0
            return static_cast<double>(values.front());
588
0
        }
589
590
1
        double u = static_cast<double>(values.size() - 1) * quantile;
591
1
        auto index = static_cast<size_t>(u);
592
593
1
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
1
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
1
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
1
        return static_cast<double>(values[index]) +
601
1
               (u - static_cast<double>(index)) *
602
1
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE11_get_resultEd
Line
Count
Source
585
2
    double _get_result(double quantile) const {
586
2
        if (values.size() == 1) {
587
0
            return static_cast<double>(values.front());
588
0
        }
589
590
2
        double u = static_cast<double>(values.size() - 1) * quantile;
591
2
        auto index = static_cast<size_t>(u);
592
593
2
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
2
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
2
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
2
        return static_cast<double>(values[index]) +
601
2
               (u - static_cast<double>(index)) *
602
2
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
2
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE11_get_resultEd
Line
Count
Source
585
34
    double _get_result(double quantile) const {
586
34
        if (values.size() == 1) {
587
12
            return static_cast<double>(values.front());
588
12
        }
589
590
22
        double u = static_cast<double>(values.size() - 1) * quantile;
591
22
        auto index = static_cast<size_t>(u);
592
593
22
        if (index + 1 >= values.size()) {
594
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
595
0
        }
596
597
22
        std::nth_element(values.begin(), values.begin() + index, values.end());
598
22
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
599
600
22
        return static_cast<double>(values[index]) +
601
22
               (u - static_cast<double>(index)) *
602
22
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
603
22
    }
604
605
    mutable Array values;
606
    mutable PercentileLevels levels;
607
    bool inited_flag = false;
608
};
609
610
template <PrimitiveType T>
611
class AggregateFunctionPercentile final
612
        : public IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>,
613
          MultiExpression,
614
          NullableAggregateFunction {
615
public:
616
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
617
    using Base = IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>;
618
1.10k
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
618
1.10k
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
619
620
79
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
620
79
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
621
622
21
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE15get_return_typeEv
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
622
21
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE15get_return_typeEv
623
624
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
625
122
             Arena&) const override {
626
122
        const auto& sources =
627
122
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
628
122
        const auto& quantile =
629
122
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
630
122
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
631
122
                                                     quantile.get_data(), NullMap(1, 0), 1);
632
122
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
625
122
             Arena&) const override {
626
122
        const auto& sources =
627
122
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
628
122
        const auto& quantile =
629
122
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
630
122
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
631
122
                                                     quantile.get_data(), NullMap(1, 0), 1);
632
122
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
633
634
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
635
0
                                Arena&) const override {
636
0
        const auto& sources =
637
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
638
0
        const auto& quantile =
639
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
640
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
641
0
        AggregateFunctionPercentile::data(place).add_batch(sources.get_data(),
642
0
                                                           quantile.get_data()[0]);
643
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
644
645
71
    void reset(AggregateDataPtr __restrict place) const override {
646
71
        AggregateFunctionPercentile::data(place).reset();
647
71
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5resetEPc
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5resetEPc
Line
Count
Source
645
71
    void reset(AggregateDataPtr __restrict place) const override {
646
71
        AggregateFunctionPercentile::data(place).reset();
647
71
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5resetEPc
648
649
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
650
216
               Arena&) const override {
651
216
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
652
216
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
650
216
               Arena&) const override {
651
216
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
652
216
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
653
654
222
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
655
222
        AggregateFunctionPercentile::data(place).write(buf);
656
222
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
654
222
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
655
222
        AggregateFunctionPercentile::data(place).write(buf);
656
222
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
657
658
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
659
216
                     Arena&) const override {
660
216
        AggregateFunctionPercentile::data(place).read(buf);
661
216
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
659
216
                     Arena&) const override {
660
216
        AggregateFunctionPercentile::data(place).read(buf);
661
216
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
662
663
24
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
664
24
        auto& col = assert_cast<ColumnFloat64&>(to);
665
24
        col.insert_value(AggregateFunctionPercentile::data(place).get());
666
24
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
663
24
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
664
24
        auto& col = assert_cast<ColumnFloat64&>(to);
665
24
        col.insert_value(AggregateFunctionPercentile::data(place).get());
666
24
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
667
};
668
669
template <PrimitiveType T>
670
class AggregateFunctionPercentileArray final
671
        : public IAggregateFunctionDataHelper<PercentileState<T>,
672
                                              AggregateFunctionPercentileArray<T>>,
673
          MultiExpression,
674
          NotNullableAggregateFunction {
675
public:
676
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
677
    using Base =
678
            IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentileArray<T>>;
679
415
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
679
414
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
679
1
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
680
681
21
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
Line
Count
Source
681
20
    String get_name() const override { return "percentile_array"; }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
681
1
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
682
683
0
    DataTypePtr get_return_type() const override {
684
0
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
685
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE15get_return_typeEv
686
687
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
688
100
             Arena&) const override {
689
100
        const auto& sources =
690
100
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
691
100
        const auto& quantile_array =
692
100
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
693
100
        const auto& offset_column_data = quantile_array.get_offsets();
694
100
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
695
100
                                        quantile_array.get_data())
696
100
                                        .get_null_map_data();
697
100
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
698
100
                                            quantile_array.get_data())
699
100
                                            .get_nested_column();
700
100
        const auto& nested_column_data =
701
100
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
702
703
100
        AggregateFunctionPercentileArray::data(place).add(
704
100
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
705
100
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
706
100
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
688
100
             Arena&) const override {
689
100
        const auto& sources =
690
100
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
691
100
        const auto& quantile_array =
692
100
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
693
100
        const auto& offset_column_data = quantile_array.get_offsets();
694
100
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
695
100
                                        quantile_array.get_data())
696
100
                                        .get_null_map_data();
697
100
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
698
100
                                            quantile_array.get_data())
699
100
                                            .get_nested_column();
700
100
        const auto& nested_column_data =
701
100
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
702
703
100
        AggregateFunctionPercentileArray::data(place).add(
704
100
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
705
100
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
706
100
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
707
708
26
    void reset(AggregateDataPtr __restrict place) const override {
709
26
        AggregateFunctionPercentileArray::data(place).reset();
710
26
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5resetEPc
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5resetEPc
Line
Count
Source
708
26
    void reset(AggregateDataPtr __restrict place) const override {
709
26
        AggregateFunctionPercentileArray::data(place).reset();
710
26
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE5resetEPc
711
712
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
713
121
               Arena&) const override {
714
121
        AggregateFunctionPercentileArray::data(place).merge(
715
121
                AggregateFunctionPercentileArray::data(rhs));
716
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
713
121
               Arena&) const override {
714
121
        AggregateFunctionPercentileArray::data(place).merge(
715
121
                AggregateFunctionPercentileArray::data(rhs));
716
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
717
718
160
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
719
160
        AggregateFunctionPercentileArray::data(place).write(buf);
720
160
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
718
160
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
719
160
        AggregateFunctionPercentileArray::data(place).write(buf);
720
160
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
721
722
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
723
121
                     Arena&) const override {
724
121
        AggregateFunctionPercentileArray::data(place).read(buf);
725
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
723
121
                     Arena&) const override {
724
121
        AggregateFunctionPercentileArray::data(place).read(buf);
725
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
726
727
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
728
0
        auto& to_arr = assert_cast<ColumnArray&>(to);
729
0
        auto& to_nested_col = to_arr.get_data();
730
0
        if (is_column_nullable(to_nested_col)) {
731
0
            auto col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
732
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(
733
0
                    col_null->get_nested_column());
734
0
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
735
0
        } else {
736
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(to_nested_col);
737
0
        }
738
0
        to_arr.get_offsets().push_back(to_nested_col.size());
739
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
740
};
741
742
template <PrimitiveType T>
743
class AggregateFunctionPercentileV2 final
744
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
745
                                              AggregateFunctionPercentileV2<T>>,
746
          MultiExpression,
747
          NullableAggregateFunction {
748
public:
749
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
750
    using Base =
751
            IAggregateFunctionDataHelper<PercentileExactState<T>, AggregateFunctionPercentileV2<T>>;
752
111
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
9
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
15
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
24
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
39
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
3
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
5
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
752
16
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
753
754
82
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Line
Count
Source
754
4
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Line
Count
Source
754
65
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
Line
Count
Source
754
1
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
754
2
    String get_name() const override { return "percentile_v2"; }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
Line
Count
Source
754
10
    String get_name() const override { return "percentile_v2"; }
755
756
285
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
756
19
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
756
84
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
756
51
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
756
71
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
756
7
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Line
Count
Source
756
11
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
756
42
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
757
758
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
759
821
             Arena&) const override {
760
821
        const auto& sources =
761
821
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
821
        const auto& quantile =
763
821
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
821
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
821
                                                                    quantile.get_data()[0]);
766
821
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
31
             Arena&) const override {
760
31
        const auto& sources =
761
31
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
31
        const auto& quantile =
763
31
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
31
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
31
                                                                    quantile.get_data()[0]);
766
31
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
311
             Arena&) const override {
760
311
        const auto& sources =
761
311
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
311
        const auto& quantile =
763
311
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
311
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
311
                                                                    quantile.get_data()[0]);
766
311
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
229
             Arena&) const override {
760
229
        const auto& sources =
761
229
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
229
        const auto& quantile =
763
229
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
229
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
229
                                                                    quantile.get_data()[0]);
766
229
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
192
             Arena&) const override {
760
192
        const auto& sources =
761
192
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
192
        const auto& quantile =
763
192
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
192
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
192
                                                                    quantile.get_data()[0]);
766
192
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
3
             Arena&) const override {
760
3
        const auto& sources =
761
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
3
        const auto& quantile =
763
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
3
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
3
                                                                    quantile.get_data()[0]);
766
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
6
             Arena&) const override {
760
6
        const auto& sources =
761
6
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
6
        const auto& quantile =
763
6
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
6
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
6
                                                                    quantile.get_data()[0]);
766
6
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
759
49
             Arena&) const override {
760
49
        const auto& sources =
761
49
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
762
49
        const auto& quantile =
763
49
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
764
49
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
765
49
                                                                    quantile.get_data()[0]);
766
49
    }
767
768
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
769
7
                                Arena&) const override {
770
7
        const auto& sources =
771
7
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
772
7
        const auto& quantile =
773
7
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
774
7
        DCHECK_EQ(sources.get_data().size(), batch_size);
775
7
        AggregateFunctionPercentileV2::data(place).add_single_range(
776
7
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
777
7
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
769
2
                                Arena&) const override {
770
2
        const auto& sources =
771
2
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
772
2
        const auto& quantile =
773
2
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
774
        DCHECK_EQ(sources.get_data().size(), batch_size);
775
2
        AggregateFunctionPercentileV2::data(place).add_single_range(
776
2
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
777
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
769
5
                                Arena&) const override {
770
5
        const auto& sources =
771
5
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
772
5
        const auto& quantile =
773
5
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
774
        DCHECK_EQ(sources.get_data().size(), batch_size);
775
5
        AggregateFunctionPercentileV2::data(place).add_single_range(
776
5
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
777
5
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
778
779
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
780
0
                         const IColumn** columns, Arena&, bool has_null) override {
781
0
        const auto& sources =
782
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
783
0
        const auto& quantile =
784
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
785
0
        DCHECK(!has_null);
786
0
        AggregateFunctionPercentileV2::data(place).add_single_range(
787
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
788
0
                quantile.get_data()[0]);
789
0
    }
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
790
791
114
    void reset(AggregateDataPtr __restrict place) const override {
792
114
        AggregateFunctionPercentileV2::data(place).reset();
793
114
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5resetEPc
Line
Count
Source
791
102
    void reset(AggregateDataPtr __restrict place) const override {
792
102
        AggregateFunctionPercentileV2::data(place).reset();
793
102
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5resetEPc
Line
Count
Source
791
9
    void reset(AggregateDataPtr __restrict place) const override {
792
9
        AggregateFunctionPercentileV2::data(place).reset();
793
9
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
791
3
    void reset(AggregateDataPtr __restrict place) const override {
792
3
        AggregateFunctionPercentileV2::data(place).reset();
793
3
    }
794
795
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
796
85
               Arena&) const override {
797
85
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
85
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
2
               Arena&) const override {
797
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
2
               Arena&) const override {
797
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
4
               Arena&) const override {
797
4
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
4
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
68
               Arena&) const override {
797
68
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
68
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
2
               Arena&) const override {
797
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
3
               Arena&) const override {
797
3
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
796
4
               Arena&) const override {
797
4
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
798
4
    }
799
800
85
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
85
        AggregateFunctionPercentileV2::data(place).write(buf);
802
85
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
2
        AggregateFunctionPercentileV2::data(place).write(buf);
802
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
2
        AggregateFunctionPercentileV2::data(place).write(buf);
802
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
4
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
4
        AggregateFunctionPercentileV2::data(place).write(buf);
802
4
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
68
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
68
        AggregateFunctionPercentileV2::data(place).write(buf);
802
68
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
2
        AggregateFunctionPercentileV2::data(place).write(buf);
802
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
3
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
3
        AggregateFunctionPercentileV2::data(place).write(buf);
802
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
800
4
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
801
4
        AggregateFunctionPercentileV2::data(place).write(buf);
802
4
    }
803
804
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
805
85
                     Arena&) const override {
806
85
        AggregateFunctionPercentileV2::data(place).read(buf);
807
85
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
2
                     Arena&) const override {
806
2
        AggregateFunctionPercentileV2::data(place).read(buf);
807
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
2
                     Arena&) const override {
806
2
        AggregateFunctionPercentileV2::data(place).read(buf);
807
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
4
                     Arena&) const override {
806
4
        AggregateFunctionPercentileV2::data(place).read(buf);
807
4
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
68
                     Arena&) const override {
806
68
        AggregateFunctionPercentileV2::data(place).read(buf);
807
68
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
2
                     Arena&) const override {
806
2
        AggregateFunctionPercentileV2::data(place).read(buf);
807
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
3
                     Arena&) const override {
806
3
        AggregateFunctionPercentileV2::data(place).read(buf);
807
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
805
4
                     Arena&) const override {
806
4
        AggregateFunctionPercentileV2::data(place).read(buf);
807
4
    }
808
809
366
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
366
        auto& col = assert_cast<ColumnFloat64&>(to);
811
366
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
366
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
30
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
30
        auto& col = assert_cast<ColumnFloat64&>(to);
811
30
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
30
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
177
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
177
        auto& col = assert_cast<ColumnFloat64&>(to);
811
177
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
177
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
54
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
54
        auto& col = assert_cast<ColumnFloat64&>(to);
811
54
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
54
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
67
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
67
        auto& col = assert_cast<ColumnFloat64&>(to);
811
67
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
67
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
1
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
1
        auto& col = assert_cast<ColumnFloat64&>(to);
811
1
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
1
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
2
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
2
        auto& col = assert_cast<ColumnFloat64&>(to);
811
2
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
809
35
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
810
35
        auto& col = assert_cast<ColumnFloat64&>(to);
811
35
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
812
35
    }
813
};
814
815
template <PrimitiveType T>
816
class AggregateFunctionPercentileArrayV2 final
817
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
818
                                              AggregateFunctionPercentileArrayV2<T>>,
819
          MultiExpression,
820
          NotNullableAggregateFunction {
821
public:
822
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
823
    using Base = IAggregateFunctionDataHelper<PercentileExactState<T>,
824
                                              AggregateFunctionPercentileArrayV2<T>>;
825
80
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
5
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
7
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
31
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
14
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
5
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
3
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
825
15
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
826
827
11
    String get_name() const override { return "percentile_array_v2"; }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
827
1
    String get_name() const override { return "percentile_array_v2"; }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
Line
Count
Source
827
10
    String get_name() const override { return "percentile_array_v2"; }
828
829
177
    DataTypePtr get_return_type() const override {
830
177
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
177
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
829
11
    DataTypePtr get_return_type() const override {
830
11
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
11
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
829
15
    DataTypePtr get_return_type() const override {
830
15
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
829
69
    DataTypePtr get_return_type() const override {
830
69
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
69
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
829
24
    DataTypePtr get_return_type() const override {
830
24
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
24
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
829
11
    DataTypePtr get_return_type() const override {
830
11
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
11
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Line
Count
Source
829
7
    DataTypePtr get_return_type() const override {
830
7
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
829
40
    DataTypePtr get_return_type() const override {
830
40
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
831
40
    }
832
833
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
834
669
             Arena&) const override {
835
669
        const auto& sources =
836
669
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
669
        const auto& quantile_array =
838
669
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
669
        const auto& offset_column_data = quantile_array.get_offsets();
840
669
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
669
                                        quantile_array.get_data())
842
669
                                        .get_null_map_data();
843
669
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
669
                                            quantile_array.get_data())
845
669
                                            .get_nested_column();
846
669
        const auto& nested_column_data =
847
669
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
669
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
669
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
669
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
669
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
669
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
15
             Arena&) const override {
835
15
        const auto& sources =
836
15
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
15
        const auto& quantile_array =
838
15
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
15
        const auto& offset_column_data = quantile_array.get_offsets();
840
15
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
15
                                        quantile_array.get_data())
842
15
                                        .get_null_map_data();
843
15
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
15
                                            quantile_array.get_data())
845
15
                                            .get_nested_column();
846
15
        const auto& nested_column_data =
847
15
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
15
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
15
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
15
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
15
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
30
             Arena&) const override {
835
30
        const auto& sources =
836
30
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
30
        const auto& quantile_array =
838
30
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
30
        const auto& offset_column_data = quantile_array.get_offsets();
840
30
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
30
                                        quantile_array.get_data())
842
30
                                        .get_null_map_data();
843
30
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
30
                                            quantile_array.get_data())
845
30
                                            .get_nested_column();
846
30
        const auto& nested_column_data =
847
30
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
30
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
30
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
30
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
30
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
30
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
484
             Arena&) const override {
835
484
        const auto& sources =
836
484
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
484
        const auto& quantile_array =
838
484
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
484
        const auto& offset_column_data = quantile_array.get_offsets();
840
484
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
484
                                        quantile_array.get_data())
842
484
                                        .get_null_map_data();
843
484
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
484
                                            quantile_array.get_data())
845
484
                                            .get_nested_column();
846
484
        const auto& nested_column_data =
847
484
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
484
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
484
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
484
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
484
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
484
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
33
             Arena&) const override {
835
33
        const auto& sources =
836
33
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
33
        const auto& quantile_array =
838
33
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
33
        const auto& offset_column_data = quantile_array.get_offsets();
840
33
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
33
                                        quantile_array.get_data())
842
33
                                        .get_null_map_data();
843
33
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
33
                                            quantile_array.get_data())
845
33
                                            .get_nested_column();
846
33
        const auto& nested_column_data =
847
33
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
33
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
33
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
33
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
33
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
33
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
15
             Arena&) const override {
835
15
        const auto& sources =
836
15
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
15
        const auto& quantile_array =
838
15
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
15
        const auto& offset_column_data = quantile_array.get_offsets();
840
15
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
15
                                        quantile_array.get_data())
842
15
                                        .get_null_map_data();
843
15
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
15
                                            quantile_array.get_data())
845
15
                                            .get_nested_column();
846
15
        const auto& nested_column_data =
847
15
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
15
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
15
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
15
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
15
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
3
             Arena&) const override {
835
3
        const auto& sources =
836
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
3
        const auto& quantile_array =
838
3
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
3
        const auto& offset_column_data = quantile_array.get_offsets();
840
3
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
3
                                        quantile_array.get_data())
842
3
                                        .get_null_map_data();
843
3
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
3
                                            quantile_array.get_data())
845
3
                                            .get_nested_column();
846
3
        const auto& nested_column_data =
847
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
3
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
3
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
3
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
3
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
834
89
             Arena&) const override {
835
89
        const auto& sources =
836
89
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
837
89
        const auto& quantile_array =
838
89
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
839
89
        const auto& offset_column_data = quantile_array.get_offsets();
840
89
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
841
89
                                        quantile_array.get_data())
842
89
                                        .get_null_map_data();
843
89
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
844
89
                                            quantile_array.get_data())
845
89
                                            .get_nested_column();
846
89
        const auto& nested_column_data =
847
89
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
848
89
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
849
89
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
850
89
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
851
89
                cast_set<int64_t>(offset_column_data[row_num] - start));
852
89
    }
853
854
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
855
1
                                Arena&) const override {
856
1
        const auto& sources =
857
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
858
1
        const auto& quantile_array =
859
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
860
1
        const auto& offset_column_data = quantile_array.get_offsets();
861
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
862
1
                                        quantile_array.get_data())
863
1
                                        .get_null_map_data();
864
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
865
1
                                            quantile_array.get_data())
866
1
                                            .get_nested_column();
867
1
        const auto& nested_column_data =
868
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
869
1
        DCHECK_EQ(sources.get_data().size(), batch_size);
870
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
871
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
872
1
                cast_set<int64_t>(offset_column_data[0]));
873
1
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
855
1
                                Arena&) const override {
856
1
        const auto& sources =
857
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
858
1
        const auto& quantile_array =
859
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
860
1
        const auto& offset_column_data = quantile_array.get_offsets();
861
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
862
1
                                        quantile_array.get_data())
863
1
                                        .get_null_map_data();
864
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
865
1
                                            quantile_array.get_data())
866
1
                                            .get_nested_column();
867
1
        const auto& nested_column_data =
868
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
869
        DCHECK_EQ(sources.get_data().size(), batch_size);
870
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
871
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
872
1
                cast_set<int64_t>(offset_column_data[0]));
873
1
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
874
875
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
876
0
                         const IColumn** columns, Arena&, bool has_null) override {
877
0
        const auto& sources =
878
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
879
0
        const auto& quantile_array =
880
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
881
0
        const auto& offset_column_data = quantile_array.get_offsets();
882
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
883
0
                                        quantile_array.get_data())
884
0
                                        .get_null_map_data();
885
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
886
0
                                            quantile_array.get_data())
887
0
                                            .get_nested_column();
888
0
        const auto& nested_column_data =
889
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
890
0
        DCHECK(!has_null);
891
0
        size_t start = batch_begin == 0 ? 0 : offset_column_data[batch_begin - 1];
892
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
893
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
894
0
                nested_column_data.get_data(), null_maps, start,
895
0
                cast_set<int64_t>(offset_column_data[batch_begin] - start));
896
0
    }
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
897
898
3
    void reset(AggregateDataPtr __restrict place) const override {
899
3
        AggregateFunctionPercentileArrayV2::data(place).reset();
900
3
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
898
3
    void reset(AggregateDataPtr __restrict place) const override {
899
3
        AggregateFunctionPercentileArrayV2::data(place).reset();
900
3
    }
901
902
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
903
26
               Arena&) const override {
904
26
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
26
                AggregateFunctionPercentileArrayV2::data(rhs));
906
26
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
2
               Arena&) const override {
904
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
2
                AggregateFunctionPercentileArrayV2::data(rhs));
906
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
7
               Arena&) const override {
904
7
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
7
                AggregateFunctionPercentileArrayV2::data(rhs));
906
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
4
               Arena&) const override {
904
4
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
4
                AggregateFunctionPercentileArrayV2::data(rhs));
906
4
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
3
               Arena&) const override {
904
3
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
3
                AggregateFunctionPercentileArrayV2::data(rhs));
906
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
2
               Arena&) const override {
904
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
2
                AggregateFunctionPercentileArrayV2::data(rhs));
906
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
2
               Arena&) const override {
904
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
2
                AggregateFunctionPercentileArrayV2::data(rhs));
906
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
903
6
               Arena&) const override {
904
6
        AggregateFunctionPercentileArrayV2::data(place).merge(
905
6
                AggregateFunctionPercentileArrayV2::data(rhs));
906
6
    }
907
908
26
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
26
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
26
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
7
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
7
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
4
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
4
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
4
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
3
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
3
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
908
6
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
909
6
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
910
6
    }
911
912
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
913
26
                     Arena&) const override {
914
26
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
26
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
2
                     Arena&) const override {
914
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
7
                     Arena&) const override {
914
7
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
4
                     Arena&) const override {
914
4
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
4
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
3
                     Arena&) const override {
914
3
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
2
                     Arena&) const override {
914
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
2
                     Arena&) const override {
914
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
913
6
                     Arena&) const override {
914
6
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
915
6
    }
916
917
267
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
267
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
267
        auto& to_nested_col = to_arr.get_data();
920
267
        if (is_column_nullable(to_nested_col)) {
921
267
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
267
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
267
                    col_null->get_nested_column());
924
267
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
267
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
267
        to_arr.get_offsets().push_back(to_nested_col.size());
929
267
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
12
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
12
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
12
        auto& to_nested_col = to_arr.get_data();
920
12
        if (is_column_nullable(to_nested_col)) {
921
12
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
12
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
12
                    col_null->get_nested_column());
924
12
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
12
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
12
        to_arr.get_offsets().push_back(to_nested_col.size());
929
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
13
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
13
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
13
        auto& to_nested_col = to_arr.get_data();
920
13
        if (is_column_nullable(to_nested_col)) {
921
13
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
13
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
13
                    col_null->get_nested_column());
924
13
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
13
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
13
        to_arr.get_offsets().push_back(to_nested_col.size());
929
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
171
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
171
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
171
        auto& to_nested_col = to_arr.get_data();
920
171
        if (is_column_nullable(to_nested_col)) {
921
171
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
171
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
171
                    col_null->get_nested_column());
924
171
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
171
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
171
        to_arr.get_offsets().push_back(to_nested_col.size());
929
171
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
13
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
13
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
13
        auto& to_nested_col = to_arr.get_data();
920
13
        if (is_column_nullable(to_nested_col)) {
921
13
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
13
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
13
                    col_null->get_nested_column());
924
13
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
13
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
13
        to_arr.get_offsets().push_back(to_nested_col.size());
929
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
12
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
12
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
12
        auto& to_nested_col = to_arr.get_data();
920
12
        if (is_column_nullable(to_nested_col)) {
921
12
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
12
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
12
                    col_null->get_nested_column());
924
12
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
12
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
12
        to_arr.get_offsets().push_back(to_nested_col.size());
929
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
2
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
2
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
2
        auto& to_nested_col = to_arr.get_data();
920
2
        if (is_column_nullable(to_nested_col)) {
921
2
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
2
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
2
                    col_null->get_nested_column());
924
2
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
2
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
2
        to_arr.get_offsets().push_back(to_nested_col.size());
929
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
917
44
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
918
44
        auto& to_arr = assert_cast<ColumnArray&>(to);
919
44
        auto& to_nested_col = to_arr.get_data();
920
44
        if (is_column_nullable(to_nested_col)) {
921
44
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
922
44
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
923
44
                    col_null->get_nested_column());
924
44
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
925
44
        } else {
926
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
927
0
        }
928
44
        to_arr.get_offsets().push_back(to_nested_col.size());
929
44
    }
930
};
931
932
} // namespace doris