Coverage Report

Created: 2026-09-29 14:44

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 "common/exception.h"
32
#include "core/assert_cast.h"
33
#include "core/column/column.h"
34
#include "core/column/column_array.h"
35
#include "core/column/column_nullable.h"
36
#include "core/column/column_vector.h"
37
#include "core/data_type/data_type_array.h"
38
#include "core/data_type/data_type_nullable.h"
39
#include "core/data_type/data_type_number.h"
40
#include "core/pod_array.h"
41
#include "core/pod_array_fwd.h"
42
#include "core/types.h"
43
#include "exprs/aggregate/aggregate_function.h"
44
#include "util/percentile_util.h"
45
#include "util/tdigest.h"
46
47
namespace doris {
48
49
class Arena;
50
class BufferReadable;
51
52
inline void check_percentile_array_column_type(const IAggregateFunction& function,
53
428
                                               const IColumn& column, size_t index) {
54
428
    const auto* array_column = check_and_get_column<ColumnArray>(column);
55
428
    if (UNLIKELY(array_column == nullptr)) {
56
0
        throw doris::Exception(Status::InternalError(
57
0
                "Aggregate function {} argument {} type check failed: Column type {} is not "
58
0
                "ColumnArray",
59
0
                function.get_name(), index, column.get_name()));
60
0
    }
61
62
428
    const auto* nullable_column = check_and_get_column<ColumnNullable>(array_column->get_data());
63
428
    if (UNLIKELY(nullable_column == nullptr)) {
64
0
        throw doris::Exception(Status::InternalError(
65
0
                "Aggregate function {} argument {} type check failed: Array nested column type {} "
66
0
                "is not ColumnNullable",
67
0
                function.get_name(), index, array_column->get_data().get_name()));
68
0
    }
69
70
428
    if (UNLIKELY(check_and_get_column<ColumnFloat64>(nullable_column->get_nested_column()) ==
71
428
                 nullptr)) {
72
0
        throw doris::Exception(Status::InternalError(
73
0
                "Aggregate function {} argument {} type check failed: Array nested data column "
74
0
                "type {} is not ColumnFloat64",
75
0
                function.get_name(), index, nullable_column->get_nested_column().get_name()));
76
0
    }
77
428
}
78
79
struct PercentileApproxState {
80
    static constexpr double INIT_QUANTILE = -1.0;
81
2.17k
    PercentileApproxState() = default;
82
2.17k
    ~PercentileApproxState() = default;
83
84
1.63k
    void init(double quantile, float compression = 10000) {
85
1.63k
        if (!init_flag) {
86
            //https://doris.apache.org/zh-CN/sql-reference/sql-functions/aggregate-functions/percentile_approx.html#description
87
            //The compression parameter setting range is [2048, 10000].
88
            //If the value of compression parameter is not specified set, or is outside the range of [2048, 10000],
89
            //will use the default value of 10000
90
1.08k
            if (!std::isfinite(compression) || compression < 2048 || compression > 10000) {
91
0
                compression = 10000;
92
0
            }
93
1.08k
            digest = TDigest::create_unique(compression);
94
1.08k
            check_quantile(quantile);
95
1.08k
            target_quantile = quantile;
96
1.08k
            compressions = compression;
97
1.08k
            init_flag = true;
98
1.08k
        }
99
1.63k
    }
100
101
570
    void write(BufferWritable& buf) const {
102
570
        buf.write_binary(init_flag);
103
570
        if (!init_flag) {
104
44
            return;
105
44
        }
106
107
526
        buf.write_binary(target_quantile);
108
526
        buf.write_binary(compressions);
109
526
        uint32_t serialize_size = digest->serialized_size();
110
526
        std::string result(serialize_size, '0');
111
526
        DCHECK(digest.get() != nullptr);
112
526
        digest->serialize((uint8_t*)result.c_str());
113
114
526
        buf.write_binary(result);
115
526
    }
116
117
546
    void read(BufferReadable& buf) {
118
546
        buf.read_binary(init_flag);
119
546
        if (!init_flag) {
120
44
            return;
121
44
        }
122
123
502
        buf.read_binary(target_quantile);
124
502
        buf.read_binary(compressions);
125
502
        std::string str;
126
502
        buf.read_binary(str);
127
502
        digest = TDigest::create_unique(compressions);
128
502
        digest->unserialize((uint8_t*)str.c_str());
129
502
    }
130
131
814
    double get() const {
132
814
        if (init_flag) {
133
768
            return digest->quantile(static_cast<float>(target_quantile));
134
768
        } else {
135
46
            return std::nan("");
136
46
        }
137
814
    }
138
139
703
    void merge(const PercentileApproxState& rhs) {
140
703
        if (!rhs.init_flag || rhs.digest->total_size() == 0) {
141
178
            return;
142
178
        }
143
525
        if (!init_flag || digest->total_size() == 0) {
144
288
            target_quantile = rhs.target_quantile;
145
288
            compressions = rhs.compressions;
146
288
            digest = TDigest::create_unique(compressions);
147
288
            init_flag = true;
148
288
        } else if (UNLIKELY(target_quantile != rhs.target_quantile ||
149
237
                            compressions != rhs.compressions)) {
150
48
            throw Exception(
151
48
                    ErrorCode::INVALID_ARGUMENT,
152
48
                    "percentile_approx aggregate states have incompatible quantile or compression");
153
48
        }
154
477
        digest->merge(rhs.digest.get());
155
477
    }
156
157
1.26k
    void add(double source) { digest->add(static_cast<float>(source)); }
158
159
352
    void add_with_weight(double source, double weight) {
160
        // the weight should be positive num, as have check the value valid use DCHECK_GT(c._weight, 0);
161
352
        if (weight <= 0) {
162
51
            return;
163
51
        }
164
301
        digest->add(static_cast<float>(source), static_cast<float>(weight));
165
301
    }
166
167
171
    void reset() {
168
171
        target_quantile = INIT_QUANTILE;
169
171
        init_flag = false;
170
171
        digest = TDigest::create_unique(compressions);
171
171
    }
172
173
    bool init_flag = false;
174
    std::unique_ptr<TDigest> digest;
175
    double target_quantile = INIT_QUANTILE;
176
    float compressions = 10000;
177
};
178
179
template <typename Derived>
180
class AggregateFunctionPercentileApproxBase
181
        : public IAggregateFunctionDataHelper<PercentileApproxState, Derived> {
182
public:
183
    AggregateFunctionPercentileApproxBase(const DataTypes& argument_types_)
184
930
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
632
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
117
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
120
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
61
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
185
186
88
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
54
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
24
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
10
    String get_name() const override { return "percentile_approx"; }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE8get_nameB5cxx11Ev
187
188
171
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5resetEPc
Line
Count
Source
188
58
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5resetEPc
Line
Count
Source
188
105
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5resetEPc
Line
Count
Source
188
6
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5resetEPc
Line
Count
Source
188
2
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
189
190
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
191
703
               Arena&) const override {
192
703
        this->data(place).merge(this->data(rhs));
193
703
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
424
               Arena&) const override {
192
424
        this->data(place).merge(this->data(rhs));
193
424
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
131
               Arena&) const override {
192
131
        this->data(place).merge(this->data(rhs));
193
131
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
100
               Arena&) const override {
192
100
        this->data(place).merge(this->data(rhs));
193
100
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
48
               Arena&) const override {
192
48
        this->data(place).merge(this->data(rhs));
193
48
    }
194
195
570
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
570
        this->data(place).write(buf);
197
570
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
366
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
366
        this->data(place).write(buf);
197
366
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
106
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
106
        this->data(place).write(buf);
197
106
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
66
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
66
        this->data(place).write(buf);
197
66
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
32
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
32
        this->data(place).write(buf);
197
32
    }
198
199
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
200
547
                     Arena&) const override {
201
547
        this->data(place).read(buf);
202
547
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
331
                     Arena&) const override {
201
331
        this->data(place).read(buf);
202
331
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
110
                     Arena&) const override {
201
110
        this->data(place).read(buf);
202
110
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
70
                     Arena&) const override {
201
70
        this->data(place).read(buf);
202
70
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
36
                     Arena&) const override {
201
36
        this->data(place).read(buf);
202
36
    }
203
204
441
    void check_input_columns_type(const IColumn** columns) const override {
205
1.65k
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
1.21k
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
1.21k
        }
208
441
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
129
    void check_input_columns_type(const IColumn** columns) const override {
205
389
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
260
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
260
        }
208
129
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
256
    void check_input_columns_type(const IColumn** columns) const override {
205
1.02k
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
768
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
768
        }
208
256
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
38
    void check_input_columns_type(const IColumn** columns) const override {
205
152
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
114
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
114
        }
208
38
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
18
    void check_input_columns_type(const IColumn** columns) const override {
205
90
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
72
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
72
        }
208
18
    }
209
};
210
211
class AggregateFunctionPercentileApproxTwoParams final
212
        : public AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>,
213
          public MultiExpression,
214
          public NullableAggregateFunction {
215
public:
216
    AggregateFunctionPercentileApproxTwoParams(const DataTypes& argument_types_)
217
632
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
218
632
                      argument_types_) {}
219
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
220
749
             Arena&) const override {
221
749
        const auto& sources =
222
749
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
223
749
        const auto& quantile =
224
749
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
225
749
        this->data(place).init(quantile.get_element(0));
226
749
        this->data(place).add(sources.get_element(row_num));
227
749
    }
228
229
746
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
230
231
375
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
232
375
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
233
375
        col.get_data().push_back(this->data(place).get());
234
375
    }
235
};
236
237
class AggregateFunctionPercentileApproxThreeParams final
238
        : public AggregateFunctionPercentileApproxBase<
239
                  AggregateFunctionPercentileApproxThreeParams>,
240
          public MultiExpression,
241
          public NullableAggregateFunction {
242
public:
243
    AggregateFunctionPercentileApproxThreeParams(const DataTypes& argument_types_)
244
117
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxThreeParams>(
245
117
                      argument_types_) {}
246
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
247
531
             Arena&) const override {
248
531
        const auto& sources =
249
531
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
250
531
        const auto& quantile =
251
531
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
252
531
        const auto& compression =
253
531
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
254
255
531
        this->data(place).init(quantile.get_element(0),
256
531
                               static_cast<float>(compression.get_element(0)));
257
531
        this->data(place).add(sources.get_element(row_num));
258
531
    }
259
260
623
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
261
262
277
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
263
277
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
264
277
        col.get_data().push_back(this->data(place).get());
265
277
    }
266
};
267
268
class AggregateFunctionPercentileApproxWeightedThreeParams final
269
        : public AggregateFunctionPercentileApproxBase<
270
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
271
          MultiExpression,
272
          NullableAggregateFunction {
273
public:
274
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
275
120
            : AggregateFunctionPercentileApproxBase<
276
120
                      AggregateFunctionPercentileApproxWeightedThreeParams>(argument_types_) {}
277
278
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
279
224
             Arena&) const override {
280
224
        const auto& sources =
281
224
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
282
224
        const auto& weight =
283
224
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
284
224
        const auto& quantile =
285
224
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
286
287
224
        this->data(place).init(quantile.get_element(0));
288
224
        this->data(place).add_with_weight(sources.get_element(row_num),
289
224
                                          weight.get_element(row_num));
290
224
    }
291
292
281
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
293
294
124
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
295
124
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
296
124
        col.get_data().push_back(this->data(place).get());
297
124
    }
298
};
299
300
class AggregateFunctionPercentileApproxWeightedFourParams final
301
        : public AggregateFunctionPercentileApproxBase<
302
                  AggregateFunctionPercentileApproxWeightedFourParams>,
303
          MultiExpression,
304
          NullableAggregateFunction {
305
public:
306
    AggregateFunctionPercentileApproxWeightedFourParams(const DataTypes& argument_types_)
307
61
            : AggregateFunctionPercentileApproxBase<
308
61
                      AggregateFunctionPercentileApproxWeightedFourParams>(argument_types_) {}
309
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
310
128
             Arena&) const override {
311
128
        const auto& sources =
312
128
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
313
128
        const auto& weight =
314
128
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
315
128
        const auto& quantile =
316
128
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
317
128
        const auto& compression =
318
128
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[3]);
319
320
128
        this->data(place).init(quantile.get_element(0),
321
128
                               static_cast<float>(compression.get_element(0)));
322
128
        this->data(place).add_with_weight(sources.get_element(row_num),
323
128
                                          weight.get_element(row_num));
324
128
    }
325
326
117
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
327
328
38
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
329
38
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
330
38
        col.get_data().push_back(this->data(place).get());
331
38
    }
332
};
333
334
struct PercentileApproxArrayState {
335
2.77k
    bool has_samples() const { return !levels.empty() && digest->total_size() != 0; }
336
337
    void init(const PaddedPODArray<Float64>& quantiles, const NullMap& null_map, size_t start,
338
797
              size_t size, float compression = 10000) {
339
797
        if (init_flag) {
340
0
            return;
341
0
        }
342
343
797
        if (!std::isfinite(compression) || compression < 2048 || compression > 10000) {
344
7
            compression = 10000;
345
7
        }
346
797
        compressions = compression;
347
797
        levels.quantiles.resize(size);
348
797
        levels.permutation.resize(size);
349
2.16k
        for (size_t i = 0; i < size; ++i) {
350
1.37k
            if (null_map[start + i]) {
351
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
352
1
                                "percentile_approx_array quantile should not be null");
353
1
            }
354
1.37k
            check_quantile(quantiles[start + i]);
355
1.37k
            levels.quantiles[i] = quantiles[start + i];
356
1.37k
            levels.permutation[i] = i;
357
1.37k
        }
358
796
        if (!levels.empty()) {
359
718
            digest = TDigest::create_unique(compressions);
360
718
        }
361
796
        init_flag = true;
362
796
    }
363
364
906
    void add_range(const Float64* values, size_t size) {
365
906
        if (levels.empty()) {
366
81
            return;
367
81
        }
368
1.68k
        for (size_t i = 0; i < size; ++i) {
369
863
            digest->add(static_cast<float>(values[i]));
370
863
        }
371
825
    }
372
373
914
    void write(BufferWritable& buf) const {
374
        // Sample-free states share the fresh-state encoding, independent of their parameters.
375
914
        const bool has_data = has_samples();
376
914
        buf.write_binary(has_data);
377
914
        if (!has_data) {
378
619
            return;
379
619
        }
380
381
295
        levels.write(buf);
382
295
        buf.write_binary(compressions);
383
295
        uint32_t serialize_size = digest->serialized_size();
384
295
        std::string result(serialize_size, '0');
385
295
        digest->serialize(reinterpret_cast<uint8_t*>(result.data()));
386
295
        buf.write_binary(result);
387
295
    }
388
389
566
    void read(BufferReadable& buf) {
390
566
        reset();
391
566
        buf.read_binary(init_flag);
392
566
        if (!init_flag) {
393
259
            return;
394
259
        }
395
396
307
        levels.read(buf);
397
307
        buf.read_binary(compressions);
398
307
        if (levels.empty()) {
399
0
            return;
400
0
        }
401
307
        std::string str;
402
307
        buf.read_binary(str);
403
307
        digest = TDigest::create_unique(compressions);
404
307
        digest->unserialize(reinterpret_cast<const uint8_t*>(str.data()));
405
307
    }
406
407
740
    void merge(const PercentileApproxArrayState& rhs) {
408
740
        if (!rhs.has_samples()) {
409
316
            return;
410
316
        }
411
412
424
        if (!has_samples()) {
413
335
            levels = rhs.levels;
414
335
            compressions = rhs.compressions;
415
335
            digest = TDigest::create_unique(compressions);
416
335
            init_flag = true;
417
335
        } else if (UNLIKELY(compressions != rhs.compressions ||
418
89
                            levels.quantiles != rhs.levels.quantiles)) {
419
50
            throw Exception(ErrorCode::INVALID_ARGUMENT,
420
50
                            "percentile_approx_array aggregate states have incompatible quantiles "
421
50
                            "or compression");
422
50
        }
423
374
        digest->merge(rhs.digest.get());
424
374
    }
425
426
612
    void reset() {
427
612
        init_flag = false;
428
612
        levels.clear();
429
612
        digest.reset();
430
612
        compressions = 10000;
431
612
    }
432
433
697
    void insert_result_into(IColumn& to) const {
434
697
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
435
697
        if (!has_samples()) {
436
275
            return;
437
275
        }
438
439
422
        const size_t old_size = column_data.size();
440
422
        const size_t size = levels.quantiles.size();
441
422
        column_data.resize(old_size + size);
442
422
        digest->quantiles(levels.quantiles.data(), levels.get_permutation().data(), size,
443
422
                          column_data.data() + old_size);
444
422
    }
445
446
    bool init_flag = false;
447
    PercentileLevels levels;
448
    std::unique_ptr<TDigest> digest;
449
    float compressions = 10000;
450
};
451
452
template <bool has_compression>
453
class AggregateFunctionPercentileApproxArray final
454
        : public IAggregateFunctionDataHelper<
455
                  PercentileApproxArrayState,
456
                  AggregateFunctionPercentileApproxArray<has_compression>>,
457
          MultiExpression,
458
          NotNullableAggregateFunction {
459
public:
460
    using Base =
461
            IAggregateFunctionDataHelper<PercentileApproxArrayState,
462
                                         AggregateFunctionPercentileApproxArray<has_compression>>;
463
464
    AggregateFunctionPercentileApproxArray(const DataTypes& argument_types_)
465
1.22k
            : Base(argument_types_) {}
_ZN5doris38AggregateFunctionPercentileApproxArrayILb0EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
465
148
            : Base(argument_types_) {}
_ZN5doris38AggregateFunctionPercentileApproxArrayILb1EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
465
1.07k
            : Base(argument_types_) {}
466
467
0
    String get_name() const override { return "percentile_approx_array"; }
Unexecuted instantiation: _ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE8get_nameB5cxx11Ev
468
469
1.14k
    DataTypePtr get_return_type() const override {
470
1.14k
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
1.14k
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE15get_return_typeEv
Line
Count
Source
469
482
    DataTypePtr get_return_type() const override {
470
482
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
482
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE15get_return_typeEv
Line
Count
Source
469
664
    DataTypePtr get_return_type() const override {
470
664
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
664
    }
472
473
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
474
825
             Arena&) const override {
475
825
        const auto& sources =
476
825
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
825
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
825
                    cast_set<size_t>(row_num));
479
825
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
474
452
             Arena&) const override {
475
452
        const auto& sources =
476
452
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
452
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
452
                    cast_set<size_t>(row_num));
479
452
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
474
373
             Arena&) const override {
475
373
        const auto& sources =
476
373
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
373
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
373
                    cast_set<size_t>(row_num));
479
373
    }
480
481
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
482
83
                                Arena&) const override {
483
83
        const auto& sources =
484
83
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
485
83
        DCHECK_EQ(sources.get_data().size(), batch_size);
486
83
        _add_values(this->data(place), sources.get_data().data(), batch_size, columns, 0);
487
83
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
482
7
                                Arena&) const override {
483
7
        const auto& sources =
484
7
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
485
        DCHECK_EQ(sources.get_data().size(), batch_size);
486
7
        _add_values(this->data(place), sources.get_data().data(), batch_size, columns, 0);
487
7
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
482
76
                                Arena&) const override {
483
76
        const auto& sources =
484
76
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
485
        DCHECK_EQ(sources.get_data().size(), batch_size);
486
76
        _add_values(this->data(place), sources.get_data().data(), batch_size, columns, 0);
487
76
    }
488
489
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
490
1
                         const IColumn** columns, Arena&, bool has_null) override {
491
1
        DCHECK(!has_null);
492
1
        const auto& sources =
493
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
494
1
        _add_values(this->data(place), sources.get_data().data() + batch_begin,
495
1
                    batch_end - batch_begin + 1, columns, batch_begin);
496
1
    }
_ZN5doris38AggregateFunctionPercentileApproxArrayILb0EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Line
Count
Source
490
1
                         const IColumn** columns, Arena&, bool has_null) override {
491
        DCHECK(!has_null);
492
1
        const auto& sources =
493
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
494
1
        _add_values(this->data(place), sources.get_data().data() + batch_begin,
495
1
                    batch_end - batch_begin + 1, columns, batch_begin);
496
1
    }
Unexecuted instantiation: _ZN5doris38AggregateFunctionPercentileApproxArrayILb1EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
497
498
204
    void check_input_columns_type(const IColumn** columns) const override {
499
204
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
204
        check_percentile_array_column_type(*this, *columns[1], 1);
501
204
        if constexpr (has_compression) {
502
167
            this->template check_argument_column_type<ColumnFloat64>(columns[2]);
503
167
        }
504
204
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
498
37
    void check_input_columns_type(const IColumn** columns) const override {
499
37
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
37
        check_percentile_array_column_type(*this, *columns[1], 1);
501
        if constexpr (has_compression) {
502
            this->template check_argument_column_type<ColumnFloat64>(columns[2]);
503
        }
504
37
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
498
167
    void check_input_columns_type(const IColumn** columns) const override {
499
167
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
167
        check_percentile_array_column_type(*this, *columns[1], 1);
501
167
        if constexpr (has_compression) {
502
167
            this->template check_argument_column_type<ColumnFloat64>(columns[2]);
503
167
        }
504
167
    }
505
506
46
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE5resetEPc
Line
Count
Source
506
25
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE5resetEPc
Line
Count
Source
506
21
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
507
508
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
509
740
               Arena&) const override {
510
740
        this->data(place).merge(this->data(rhs));
511
740
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
509
278
               Arena&) const override {
510
278
        this->data(place).merge(this->data(rhs));
511
278
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
509
462
               Arena&) const override {
510
462
        this->data(place).merge(this->data(rhs));
511
462
    }
512
513
913
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
913
        this->data(place).write(buf);
515
913
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
513
345
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
345
        this->data(place).write(buf);
515
345
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
513
568
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
568
        this->data(place).write(buf);
515
568
    }
516
517
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
518
566
                     Arena&) const override {
519
566
        this->data(place).read(buf);
520
566
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
518
173
                     Arena&) const override {
519
173
        this->data(place).read(buf);
520
173
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
518
393
                     Arena&) const override {
519
393
        this->data(place).read(buf);
520
393
    }
521
522
697
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
697
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
697
        auto& nullable_data =
525
697
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
697
        auto& nested_data = nullable_data.get_nested_column();
527
697
        this->data(place).insert_result_into(nested_data);
528
697
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
697
        to_arr.get_offsets().push_back(nested_data.size());
530
697
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
522
381
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
381
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
381
        auto& nullable_data =
525
381
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
381
        auto& nested_data = nullable_data.get_nested_column();
527
381
        this->data(place).insert_result_into(nested_data);
528
381
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
381
        to_arr.get_offsets().push_back(nested_data.size());
530
381
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
522
316
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
316
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
316
        auto& nullable_data =
525
316
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
316
        auto& nested_data = nullable_data.get_nested_column();
527
316
        this->data(place).insert_result_into(nested_data);
528
316
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
316
        to_arr.get_offsets().push_back(nested_data.size());
530
316
    }
531
532
private:
533
    void _add_values(PercentileApproxArrayState& state, const Float64* values, size_t value_size,
534
910
                     const IColumn** columns, size_t quantile_row) const {
535
910
        if (!state.init_flag) {
536
797
            const auto& quantile_array =
537
797
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
797
            const auto& offsets = quantile_array.get_offsets();
539
797
            const auto& nullable_quantiles =
540
797
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
797
                            quantile_array.get_data());
542
797
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
797
                                            nullable_quantiles.get_nested_column())
544
797
                                            .get_data();
545
797
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
797
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
797
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
797
            float compression = 10000;
550
797
            if constexpr (has_compression) {
551
406
                const auto& compression_column =
552
406
                        assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
553
406
                compression = static_cast<float>(compression_column.get_element(0));
554
406
            }
555
797
            state.init(quantiles, null_map, start, quantile_size, compression);
556
797
        }
557
910
        state.add_range(values, value_size);
558
910
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE11_add_valuesERNS_26PercentileApproxArrayStateEPKdmPPKNS_7IColumnEm
Line
Count
Source
534
460
                     const IColumn** columns, size_t quantile_row) const {
535
460
        if (!state.init_flag) {
536
391
            const auto& quantile_array =
537
391
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
391
            const auto& offsets = quantile_array.get_offsets();
539
391
            const auto& nullable_quantiles =
540
391
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
391
                            quantile_array.get_data());
542
391
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
391
                                            nullable_quantiles.get_nested_column())
544
391
                                            .get_data();
545
391
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
391
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
391
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
391
            float compression = 10000;
550
            if constexpr (has_compression) {
551
                const auto& compression_column =
552
                        assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
553
                compression = static_cast<float>(compression_column.get_element(0));
554
            }
555
391
            state.init(quantiles, null_map, start, quantile_size, compression);
556
391
        }
557
460
        state.add_range(values, value_size);
558
460
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE11_add_valuesERNS_26PercentileApproxArrayStateEPKdmPPKNS_7IColumnEm
Line
Count
Source
534
450
                     const IColumn** columns, size_t quantile_row) const {
535
450
        if (!state.init_flag) {
536
406
            const auto& quantile_array =
537
406
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
406
            const auto& offsets = quantile_array.get_offsets();
539
406
            const auto& nullable_quantiles =
540
406
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
406
                            quantile_array.get_data());
542
406
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
406
                                            nullable_quantiles.get_nested_column())
544
406
                                            .get_data();
545
406
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
406
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
406
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
406
            float compression = 10000;
550
406
            if constexpr (has_compression) {
551
406
                const auto& compression_column =
552
406
                        assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
553
406
                compression = static_cast<float>(compression_column.get_element(0));
554
406
            }
555
406
            state.init(quantiles, null_map, start, quantile_size, compression);
556
406
        }
557
450
        state.add_range(values, value_size);
558
450
    }
559
};
560
561
template <PrimitiveType T>
562
struct PercentileState {
563
    mutable std::vector<Counts<typename PrimitiveTypeTraits<T>::CppType>> vec_counts;
564
    std::vector<double> vec_quantile {-1};
565
    bool inited_flag = false;
566
567
525
    void write(BufferWritable& buf) const {
568
525
        buf.write_binary(inited_flag);
569
525
        if (!inited_flag) {
570
22
            return;
571
22
        }
572
503
        int size_num = cast_set<int>(vec_quantile.size());
573
503
        buf.write_binary(size_num);
574
810
        for (const auto& quantile : vec_quantile) {
575
810
            buf.write_binary(quantile);
576
810
        }
577
810
        for (auto& counts : vec_counts) {
578
810
            counts.serialize(buf);
579
810
        }
580
503
    }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Line
Count
Source
567
38
    void write(BufferWritable& buf) const {
568
38
        buf.write_binary(inited_flag);
569
38
        if (!inited_flag) {
570
0
            return;
571
0
        }
572
38
        int size_num = cast_set<int>(vec_quantile.size());
573
38
        buf.write_binary(size_num);
574
38
        for (const auto& quantile : vec_quantile) {
575
38
            buf.write_binary(quantile);
576
38
        }
577
38
        for (auto& counts : vec_counts) {
578
38
            counts.serialize(buf);
579
38
        }
580
38
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Line
Count
Source
567
212
    void write(BufferWritable& buf) const {
568
212
        buf.write_binary(inited_flag);
569
212
        if (!inited_flag) {
570
8
            return;
571
8
        }
572
204
        int size_num = cast_set<int>(vec_quantile.size());
573
204
        buf.write_binary(size_num);
574
508
        for (const auto& quantile : vec_quantile) {
575
508
            buf.write_binary(quantile);
576
508
        }
577
508
        for (auto& counts : vec_counts) {
578
508
            counts.serialize(buf);
579
508
        }
580
204
    }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
567
227
    void write(BufferWritable& buf) const {
568
227
        buf.write_binary(inited_flag);
569
227
        if (!inited_flag) {
570
0
            return;
571
0
        }
572
227
        int size_num = cast_set<int>(vec_quantile.size());
573
227
        buf.write_binary(size_num);
574
227
        for (const auto& quantile : vec_quantile) {
575
227
            buf.write_binary(quantile);
576
227
        }
577
227
        for (auto& counts : vec_counts) {
578
227
            counts.serialize(buf);
579
227
        }
580
227
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
Line
Count
Source
567
48
    void write(BufferWritable& buf) const {
568
48
        buf.write_binary(inited_flag);
569
48
        if (!inited_flag) {
570
14
            return;
571
14
        }
572
34
        int size_num = cast_set<int>(vec_quantile.size());
573
34
        buf.write_binary(size_num);
574
37
        for (const auto& quantile : vec_quantile) {
575
37
            buf.write_binary(quantile);
576
37
        }
577
37
        for (auto& counts : vec_counts) {
578
37
            counts.serialize(buf);
579
37
        }
580
34
    }
581
582
486
    void read(BufferReadable& buf) {
583
486
        buf.read_binary(inited_flag);
584
486
        if (!inited_flag) {
585
22
            return;
586
22
        }
587
464
        int size_num = 0;
588
464
        buf.read_binary(size_num);
589
464
        double data = 0.0;
590
464
        vec_quantile.clear();
591
1.15k
        for (int i = 0; i < size_num; ++i) {
592
694
            buf.read_binary(data);
593
694
            vec_quantile.emplace_back(data);
594
694
        }
595
464
        vec_counts.clear();
596
464
        vec_counts.resize(size_num);
597
1.15k
        for (int i = 0; i < size_num; ++i) {
598
695
            vec_counts[i].unserialize(buf);
599
695
        }
600
464
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Line
Count
Source
582
38
    void read(BufferReadable& buf) {
583
38
        buf.read_binary(inited_flag);
584
38
        if (!inited_flag) {
585
0
            return;
586
0
        }
587
38
        int size_num = 0;
588
38
        buf.read_binary(size_num);
589
38
        double data = 0.0;
590
38
        vec_quantile.clear();
591
76
        for (int i = 0; i < size_num; ++i) {
592
38
            buf.read_binary(data);
593
38
            vec_quantile.emplace_back(data);
594
38
        }
595
38
        vec_counts.clear();
596
38
        vec_counts.resize(size_num);
597
76
        for (int i = 0; i < size_num; ++i) {
598
38
            vec_counts[i].unserialize(buf);
599
38
        }
600
38
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Line
Count
Source
582
173
    void read(BufferReadable& buf) {
583
173
        buf.read_binary(inited_flag);
584
173
        if (!inited_flag) {
585
8
            return;
586
8
        }
587
165
        int size_num = 0;
588
165
        buf.read_binary(size_num);
589
165
        double data = 0.0;
590
165
        vec_quantile.clear();
591
555
        for (int i = 0; i < size_num; ++i) {
592
390
            buf.read_binary(data);
593
390
            vec_quantile.emplace_back(data);
594
390
        }
595
165
        vec_counts.clear();
596
165
        vec_counts.resize(size_num);
597
556
        for (int i = 0; i < size_num; ++i) {
598
391
            vec_counts[i].unserialize(buf);
599
391
        }
600
165
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
582
215
    void read(BufferReadable& buf) {
583
215
        buf.read_binary(inited_flag);
584
215
        if (!inited_flag) {
585
0
            return;
586
0
        }
587
215
        int size_num = 0;
588
215
        buf.read_binary(size_num);
589
215
        double data = 0.0;
590
215
        vec_quantile.clear();
591
430
        for (int i = 0; i < size_num; ++i) {
592
215
            buf.read_binary(data);
593
215
            vec_quantile.emplace_back(data);
594
215
        }
595
215
        vec_counts.clear();
596
215
        vec_counts.resize(size_num);
597
430
        for (int i = 0; i < size_num; ++i) {
598
215
            vec_counts[i].unserialize(buf);
599
215
        }
600
215
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE4readERNS_14BufferReadableE
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE4readERNS_14BufferReadableE
Line
Count
Source
582
60
    void read(BufferReadable& buf) {
583
60
        buf.read_binary(inited_flag);
584
60
        if (!inited_flag) {
585
14
            return;
586
14
        }
587
46
        int size_num = 0;
588
46
        buf.read_binary(size_num);
589
46
        double data = 0.0;
590
46
        vec_quantile.clear();
591
97
        for (int i = 0; i < size_num; ++i) {
592
51
            buf.read_binary(data);
593
51
            vec_quantile.emplace_back(data);
594
51
        }
595
46
        vec_counts.clear();
596
46
        vec_counts.resize(size_num);
597
97
        for (int i = 0; i < size_num; ++i) {
598
51
            vec_counts[i].unserialize(buf);
599
51
        }
600
46
    }
601
602
    void add(typename PrimitiveTypeTraits<T>::CppType source,
603
451
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
451
        if (!inited_flag) {
605
441
            vec_counts.resize(arg_size);
606
441
            vec_quantile.resize(arg_size, -1);
607
441
            inited_flag = true;
608
1.08k
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
646
                if (null_maps[i]) {
611
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
612
0
                                    "quantiles in func percentile_array should not have null");
613
0
                }
614
646
                check_quantile(quantiles[i]);
615
646
                vec_quantile[i] = quantiles[i];
616
646
            }
617
441
        }
618
1.10k
        for (int i = 0; i < arg_size; ++i) {
619
658
            vec_counts[i].increment(source);
620
658
        }
621
451
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
32
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
32
        if (!inited_flag) {
605
32
            vec_counts.resize(arg_size);
606
32
            vec_quantile.resize(arg_size, -1);
607
32
            inited_flag = true;
608
64
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
32
                if (null_maps[i]) {
611
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
612
0
                                    "quantiles in func percentile_array should not have null");
613
0
                }
614
32
                check_quantile(quantiles[i]);
615
32
                vec_quantile[i] = quantiles[i];
616
32
            }
617
32
        }
618
64
        for (int i = 0; i < arg_size; ++i) {
619
32
            vec_counts[i].increment(source);
620
32
        }
621
32
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
144
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
144
        if (!inited_flag) {
605
144
            vec_counts.resize(arg_size);
606
144
            vec_quantile.resize(arg_size, -1);
607
144
            inited_flag = true;
608
487
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
343
                if (null_maps[i]) {
611
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
612
0
                                    "quantiles in func percentile_array should not have null");
613
0
                }
614
343
                check_quantile(quantiles[i]);
615
343
                vec_quantile[i] = quantiles[i];
616
343
            }
617
144
        }
618
488
        for (int i = 0; i < arg_size; ++i) {
619
344
            vec_counts[i].increment(source);
620
344
        }
621
144
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE3addElRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
122
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
122
        if (!inited_flag) {
605
122
            vec_counts.resize(arg_size);
606
122
            vec_quantile.resize(arg_size, -1);
607
122
            inited_flag = true;
608
244
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
122
                if (null_maps[i]) {
611
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
612
0
                                    "quantiles in func percentile_array should not have null");
613
0
                }
614
122
                check_quantile(quantiles[i]);
615
122
                vec_quantile[i] = quantiles[i];
616
122
            }
617
122
        }
618
244
        for (int i = 0; i < arg_size; ++i) {
619
122
            vec_counts[i].increment(source);
620
122
        }
621
122
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE3addEnRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE3addEfRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE3addEdRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
153
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
153
        if (!inited_flag) {
605
143
            vec_counts.resize(arg_size);
606
143
            vec_quantile.resize(arg_size, -1);
607
143
            inited_flag = true;
608
292
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
149
                if (null_maps[i]) {
611
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
612
0
                                    "quantiles in func percentile_array should not have null");
613
0
                }
614
149
                check_quantile(quantiles[i]);
615
149
                vec_quantile[i] = quantiles[i];
616
149
            }
617
143
        }
618
313
        for (int i = 0; i < arg_size; ++i) {
619
160
            vec_counts[i].increment(source);
620
160
        }
621
153
    }
622
623
    void add_batch(const PaddedPODArray<typename PrimitiveTypeTraits<T>::CppType>& source,
624
0
                   const Float64& q) {
625
0
        if (!inited_flag) {
626
0
            inited_flag = true;
627
0
            vec_counts.resize(1);
628
0
            vec_quantile.resize(1);
629
0
            check_quantile(q);
630
0
            vec_quantile[0] = q;
631
0
        }
632
0
        vec_counts[0].increment_batch(source);
633
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
634
635
538
    void merge(const PercentileState& rhs) {
636
538
        if (rhs.vec_counts.empty()) {
637
44
            return;
638
44
        }
639
494
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
494
        if (vec_counts.empty()) {
641
263
            vec_counts.resize(size_num);
642
263
            vec_quantile = rhs.vec_quantile;
643
263
            inited_flag = true;
644
263
        } else if (UNLIKELY(vec_quantile != rhs.vec_quantile)) {
645
36
            throw Exception(ErrorCode::INVALID_ARGUMENT,
646
36
                            "percentile aggregate states have incompatible quantiles");
647
36
        }
648
649
1.15k
        for (int i = 0; i < size_num; ++i) {
650
693
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
693
        }
652
458
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Line
Count
Source
635
38
    void merge(const PercentileState& rhs) {
636
38
        if (rhs.vec_counts.empty()) {
637
4
            return;
638
4
        }
639
34
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
34
        if (vec_counts.empty()) {
641
22
            vec_counts.resize(size_num);
642
22
            vec_quantile = rhs.vec_quantile;
643
22
            inited_flag = true;
644
22
        } else if (UNLIKELY(vec_quantile != rhs.vec_quantile)) {
645
12
            throw Exception(ErrorCode::INVALID_ARGUMENT,
646
12
                            "percentile aggregate states have incompatible quantiles");
647
12
        }
648
649
46
        for (int i = 0; i < size_num; ++i) {
650
24
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
24
        }
652
22
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Line
Count
Source
635
180
    void merge(const PercentileState& rhs) {
636
180
        if (rhs.vec_counts.empty()) {
637
8
            return;
638
8
        }
639
172
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
172
        if (vec_counts.empty()) {
641
73
            vec_counts.resize(size_num);
642
73
            vec_quantile = rhs.vec_quantile;
643
73
            inited_flag = true;
644
99
        } else if (UNLIKELY(vec_quantile != rhs.vec_quantile)) {
645
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
646
0
                            "percentile aggregate states have incompatible quantiles");
647
0
        }
648
649
570
        for (int i = 0; i < size_num; ++i) {
650
398
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
398
        }
652
172
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
635
215
    void merge(const PercentileState& rhs) {
636
215
        if (rhs.vec_counts.empty()) {
637
0
            return;
638
0
        }
639
215
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
215
        if (vec_counts.empty()) {
641
129
            vec_counts.resize(size_num);
642
129
            vec_quantile = rhs.vec_quantile;
643
129
            inited_flag = true;
644
129
        } else if (UNLIKELY(vec_quantile != rhs.vec_quantile)) {
645
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
646
0
                            "percentile aggregate states have incompatible quantiles");
647
0
        }
648
649
430
        for (int i = 0; i < size_num; ++i) {
650
215
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
215
        }
652
215
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
Line
Count
Source
635
105
    void merge(const PercentileState& rhs) {
636
105
        if (rhs.vec_counts.empty()) {
637
32
            return;
638
32
        }
639
73
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
73
        if (vec_counts.empty()) {
641
39
            vec_counts.resize(size_num);
642
39
            vec_quantile = rhs.vec_quantile;
643
39
            inited_flag = true;
644
39
        } else if (UNLIKELY(vec_quantile != rhs.vec_quantile)) {
645
24
            throw Exception(ErrorCode::INVALID_ARGUMENT,
646
24
                            "percentile aggregate states have incompatible quantiles");
647
24
        }
648
649
105
        for (int i = 0; i < size_num; ++i) {
650
56
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
56
        }
652
49
    }
653
654
107
    void reset() {
655
107
        vec_counts.clear();
656
107
        vec_quantile.clear();
657
107
        inited_flag = false;
658
107
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5resetEv
Line
Count
Source
654
26
    void reset() {
655
26
        vec_counts.clear();
656
26
        vec_quantile.clear();
657
26
        inited_flag = false;
658
26
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
654
74
    void reset() {
655
74
        vec_counts.clear();
656
74
        vec_quantile.clear();
657
74
        inited_flag = false;
658
74
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5resetEv
Line
Count
Source
654
7
    void reset() {
655
7
        vec_counts.clear();
656
7
        vec_quantile.clear();
657
7
        inited_flag = false;
658
7
    }
659
660
58
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE3getEv
Line
Count
Source
660
6
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
660
24
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE3getEv
Line
Count
Source
660
28
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
661
662
80
    void insert_result_into(IColumn& to) const {
663
80
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
664
166
        for (int i = 0; i < vec_counts.size(); ++i) {
665
86
            column_data.push_back(vec_counts[i].terminate(vec_quantile[i]));
666
86
        }
667
80
    }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
662
4
    void insert_result_into(IColumn& to) const {
663
4
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
664
8
        for (int i = 0; i < vec_counts.size(); ++i) {
665
4
            column_data.push_back(vec_counts[i].terminate(vec_quantile[i]));
666
4
        }
667
4
    }
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
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
662
76
    void insert_result_into(IColumn& to) const {
663
76
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
664
158
        for (int i = 0; i < vec_counts.size(); ++i) {
665
82
            column_data.push_back(vec_counts[i].terminate(vec_quantile[i]));
666
82
        }
667
76
    }
668
};
669
670
template <PrimitiveType T>
671
struct PercentileExactState {
672
    using ValueType = typename PrimitiveTypeTraits<T>::CppType;
673
    static constexpr size_t bytes_in_arena = 64 - sizeof(PODArray<ValueType>);
674
    using Array = PODArrayWithStackMemory<ValueType, bytes_in_arena>;
675
676
1.27k
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
1.27k
        if (!inited_flag) {
678
688
            _set_single_level(quantile);
679
688
            inited_flag = true;
680
688
        }
681
1.27k
        _append(data, count);
682
1.27k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16add_single_rangeEPKamd
Line
Count
Source
676
31
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
31
        if (!inited_flag) {
678
6
            _set_single_level(quantile);
679
6
            inited_flag = true;
680
6
        }
681
31
        _append(data, count);
682
31
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16add_single_rangeEPKsmd
Line
Count
Source
676
310
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
310
        if (!inited_flag) {
678
100
            _set_single_level(quantile);
679
100
            inited_flag = true;
680
100
        }
681
310
        _append(data, count);
682
310
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16add_single_rangeEPKimd
Line
Count
Source
676
290
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
290
        if (!inited_flag) {
678
98
            _set_single_level(quantile);
679
98
            inited_flag = true;
680
98
        }
681
290
        _append(data, count);
682
290
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16add_single_rangeEPKlmd
Line
Count
Source
676
197
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
197
        if (!inited_flag) {
678
117
            _set_single_level(quantile);
679
117
            inited_flag = true;
680
117
        }
681
197
        _append(data, count);
682
197
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16add_single_rangeEPKnmd
Line
Count
Source
676
3
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
3
        if (!inited_flag) {
678
2
            _set_single_level(quantile);
679
2
            inited_flag = true;
680
2
        }
681
3
        _append(data, count);
682
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16add_single_rangeEPKfmd
Line
Count
Source
676
6
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
6
        if (!inited_flag) {
678
3
            _set_single_level(quantile);
679
3
            inited_flag = true;
680
3
        }
681
6
        _append(data, count);
682
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16add_single_rangeEPKdmd
Line
Count
Source
676
433
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
433
        if (!inited_flag) {
678
362
            _set_single_level(quantile);
679
362
            inited_flag = true;
680
362
        }
681
433
        _append(data, count);
682
433
    }
683
684
    void add_many_range(const ValueType* data, size_t count,
685
                        const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
686
952
                        size_t start, int64_t arg_size) {
687
952
        if (!inited_flag) {
688
569
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
569
            inited_flag = true;
690
569
        }
691
952
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
939
        _append(data, count);
695
939
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
15
                        size_t start, int64_t arg_size) {
687
15
        if (!inited_flag) {
688
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
12
            inited_flag = true;
690
12
        }
691
15
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
15
        _append(data, count);
695
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE14add_many_rangeEPKsmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
30
                        size_t start, int64_t arg_size) {
687
30
        if (!inited_flag) {
688
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
16
            inited_flag = true;
690
16
        }
691
30
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
30
        _append(data, count);
695
30
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE14add_many_rangeEPKimRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
540
                        size_t start, int64_t arg_size) {
687
540
        if (!inited_flag) {
688
260
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
260
            inited_flag = true;
690
260
        }
691
540
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
540
        _append(data, count);
695
540
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE14add_many_rangeEPKlmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
33
                        size_t start, int64_t arg_size) {
687
33
        if (!inited_flag) {
688
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
16
            inited_flag = true;
690
16
        }
691
33
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
33
        _append(data, count);
695
33
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE14add_many_rangeEPKnmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
15
                        size_t start, int64_t arg_size) {
687
15
        if (!inited_flag) {
688
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
12
            inited_flag = true;
690
12
        }
691
15
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
15
        _append(data, count);
695
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE14add_many_rangeEPKfmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
3
                        size_t start, int64_t arg_size) {
687
3
        if (!inited_flag) {
688
2
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
2
            inited_flag = true;
690
2
        }
691
3
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
3
        _append(data, count);
695
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE14add_many_rangeEPKdmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
316
                        size_t start, int64_t arg_size) {
687
316
        if (!inited_flag) {
688
251
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
251
            inited_flag = true;
690
251
        }
691
316
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
303
        _append(data, count);
695
303
    }
696
697
583
    void write(BufferWritable& buf) const {
698
583
        buf.write_binary(inited_flag);
699
583
        if (!inited_flag) {
700
44
            return;
701
44
        }
702
703
539
        levels.write(buf);
704
539
        size_t size = values.size();
705
539
        buf.write_binary(size);
706
539
        if (size > 0) {
707
499
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
499
        }
709
539
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Line
Count
Source
697
4
    void write(BufferWritable& buf) const {
698
4
        buf.write_binary(inited_flag);
699
4
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
4
        levels.write(buf);
704
4
        size_t size = values.size();
705
4
        buf.write_binary(size);
706
4
        if (size > 0) {
707
4
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
4
        }
709
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
Line
Count
Source
697
9
    void write(BufferWritable& buf) const {
698
9
        buf.write_binary(inited_flag);
699
9
        if (!inited_flag) {
700
1
            return;
701
1
        }
702
703
8
        levels.write(buf);
704
8
        size_t size = values.size();
705
8
        buf.write_binary(size);
706
8
        if (size > 0) {
707
8
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
8
        }
709
8
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Line
Count
Source
697
283
    void write(BufferWritable& buf) const {
698
283
        buf.write_binary(inited_flag);
699
283
        if (!inited_flag) {
700
1
            return;
701
1
        }
702
703
282
        levels.write(buf);
704
282
        size_t size = values.size();
705
282
        buf.write_binary(size);
706
282
        if (size > 0) {
707
282
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
282
        }
709
282
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
697
98
    void write(BufferWritable& buf) const {
698
98
        buf.write_binary(inited_flag);
699
98
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
98
        levels.write(buf);
704
98
        size_t size = values.size();
705
98
        buf.write_binary(size);
706
98
        if (size > 0) {
707
98
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
98
        }
709
98
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Line
Count
Source
697
4
    void write(BufferWritable& buf) const {
698
4
        buf.write_binary(inited_flag);
699
4
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
4
        levels.write(buf);
704
4
        size_t size = values.size();
705
4
        buf.write_binary(size);
706
4
        if (size > 0) {
707
4
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
4
        }
709
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
Line
Count
Source
697
5
    void write(BufferWritable& buf) const {
698
5
        buf.write_binary(inited_flag);
699
5
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
5
        levels.write(buf);
704
5
        size_t size = values.size();
705
5
        buf.write_binary(size);
706
5
        if (size > 0) {
707
5
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
5
        }
709
5
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
Line
Count
Source
697
180
    void write(BufferWritable& buf) const {
698
180
        buf.write_binary(inited_flag);
699
180
        if (!inited_flag) {
700
42
            return;
701
42
        }
702
703
138
        levels.write(buf);
704
138
        size_t size = values.size();
705
138
        buf.write_binary(size);
706
138
        if (size > 0) {
707
98
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
98
        }
709
138
    }
710
711
595
    void read(BufferReadable& buf) {
712
595
        reset();
713
595
        buf.read_binary(inited_flag);
714
595
        if (!inited_flag) {
715
44
            return;
716
44
        }
717
718
551
        levels.read(buf);
719
551
        size_t size = 0;
720
551
        buf.read_binary(size);
721
551
        values.resize(size);
722
551
        if (size > 0) {
723
511
            auto raw = buf.read(sizeof(ValueType) * size);
724
511
            memcpy(values.data(), raw.data, raw.size);
725
511
        }
726
551
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Line
Count
Source
711
4
    void read(BufferReadable& buf) {
712
4
        reset();
713
4
        buf.read_binary(inited_flag);
714
4
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
4
        levels.read(buf);
719
4
        size_t size = 0;
720
4
        buf.read_binary(size);
721
4
        values.resize(size);
722
4
        if (size > 0) {
723
4
            auto raw = buf.read(sizeof(ValueType) * size);
724
4
            memcpy(values.data(), raw.data, raw.size);
725
4
        }
726
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
Line
Count
Source
711
9
    void read(BufferReadable& buf) {
712
9
        reset();
713
9
        buf.read_binary(inited_flag);
714
9
        if (!inited_flag) {
715
1
            return;
716
1
        }
717
718
8
        levels.read(buf);
719
8
        size_t size = 0;
720
8
        buf.read_binary(size);
721
8
        values.resize(size);
722
8
        if (size > 0) {
723
8
            auto raw = buf.read(sizeof(ValueType) * size);
724
8
            memcpy(values.data(), raw.data, raw.size);
725
8
        }
726
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Line
Count
Source
711
283
    void read(BufferReadable& buf) {
712
283
        reset();
713
283
        buf.read_binary(inited_flag);
714
283
        if (!inited_flag) {
715
1
            return;
716
1
        }
717
718
282
        levels.read(buf);
719
282
        size_t size = 0;
720
282
        buf.read_binary(size);
721
282
        values.resize(size);
722
282
        if (size > 0) {
723
282
            auto raw = buf.read(sizeof(ValueType) * size);
724
282
            memcpy(values.data(), raw.data, raw.size);
725
282
        }
726
282
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
711
98
    void read(BufferReadable& buf) {
712
98
        reset();
713
98
        buf.read_binary(inited_flag);
714
98
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
98
        levels.read(buf);
719
98
        size_t size = 0;
720
98
        buf.read_binary(size);
721
98
        values.resize(size);
722
98
        if (size > 0) {
723
98
            auto raw = buf.read(sizeof(ValueType) * size);
724
98
            memcpy(values.data(), raw.data, raw.size);
725
98
        }
726
98
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE4readERNS_14BufferReadableE
Line
Count
Source
711
4
    void read(BufferReadable& buf) {
712
4
        reset();
713
4
        buf.read_binary(inited_flag);
714
4
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
4
        levels.read(buf);
719
4
        size_t size = 0;
720
4
        buf.read_binary(size);
721
4
        values.resize(size);
722
4
        if (size > 0) {
723
4
            auto raw = buf.read(sizeof(ValueType) * size);
724
4
            memcpy(values.data(), raw.data, raw.size);
725
4
        }
726
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE4readERNS_14BufferReadableE
Line
Count
Source
711
5
    void read(BufferReadable& buf) {
712
5
        reset();
713
5
        buf.read_binary(inited_flag);
714
5
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
5
        levels.read(buf);
719
5
        size_t size = 0;
720
5
        buf.read_binary(size);
721
5
        values.resize(size);
722
5
        if (size > 0) {
723
5
            auto raw = buf.read(sizeof(ValueType) * size);
724
5
            memcpy(values.data(), raw.data, raw.size);
725
5
        }
726
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE4readERNS_14BufferReadableE
Line
Count
Source
711
192
    void read(BufferReadable& buf) {
712
192
        reset();
713
192
        buf.read_binary(inited_flag);
714
192
        if (!inited_flag) {
715
42
            return;
716
42
        }
717
718
150
        levels.read(buf);
719
150
        size_t size = 0;
720
150
        buf.read_binary(size);
721
150
        values.resize(size);
722
150
        if (size > 0) {
723
110
            auto raw = buf.read(sizeof(ValueType) * size);
724
110
            memcpy(values.data(), raw.data, raw.size);
725
110
        }
726
150
    }
727
728
752
    void merge(const PercentileExactState& rhs) {
729
752
        if (!rhs.inited_flag) {
730
86
            return;
731
86
        }
732
733
666
        if (values.empty()) {
734
399
            levels = rhs.levels;
735
399
            inited_flag = true;
736
399
        } else if (rhs.values.empty()) {
737
18
            return;
738
249
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
24
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
24
                            "percentile aggregate states have incompatible quantiles");
741
24
        }
742
624
        _append(rhs.values.data(), rhs.values.size());
743
624
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Line
Count
Source
728
4
    void merge(const PercentileExactState& rhs) {
729
4
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
4
        if (values.empty()) {
734
2
            levels = rhs.levels;
735
2
            inited_flag = true;
736
2
        } else if (rhs.values.empty()) {
737
0
            return;
738
2
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
4
        _append(rhs.values.data(), rhs.values.size());
743
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
Line
Count
Source
728
9
    void merge(const PercentileExactState& rhs) {
729
9
        if (!rhs.inited_flag) {
730
1
            return;
731
1
        }
732
733
8
        if (values.empty()) {
734
3
            levels = rhs.levels;
735
3
            inited_flag = true;
736
5
        } else if (rhs.values.empty()) {
737
0
            return;
738
5
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
8
        _append(rhs.values.data(), rhs.values.size());
743
8
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Line
Count
Source
728
287
    void merge(const PercentileExactState& rhs) {
729
287
        if (!rhs.inited_flag) {
730
1
            return;
731
1
        }
732
733
286
        if (values.empty()) {
734
178
            levels = rhs.levels;
735
178
            inited_flag = true;
736
178
        } else if (rhs.values.empty()) {
737
0
            return;
738
108
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
286
        _append(rhs.values.data(), rhs.values.size());
743
286
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
728
98
    void merge(const PercentileExactState& rhs) {
729
98
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
98
        if (values.empty()) {
734
46
            levels = rhs.levels;
735
46
            inited_flag = true;
736
52
        } else if (rhs.values.empty()) {
737
0
            return;
738
52
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
98
        _append(rhs.values.data(), rhs.values.size());
743
98
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Line
Count
Source
728
4
    void merge(const PercentileExactState& rhs) {
729
4
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
4
        if (values.empty()) {
734
2
            levels = rhs.levels;
735
2
            inited_flag = true;
736
2
        } else if (rhs.values.empty()) {
737
0
            return;
738
2
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
4
        _append(rhs.values.data(), rhs.values.size());
743
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
Line
Count
Source
728
5
    void merge(const PercentileExactState& rhs) {
729
5
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
5
        if (values.empty()) {
734
3
            levels = rhs.levels;
735
3
            inited_flag = true;
736
3
        } else if (rhs.values.empty()) {
737
0
            return;
738
2
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
0
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
0
                            "percentile aggregate states have incompatible quantiles");
741
0
        }
742
5
        _append(rhs.values.data(), rhs.values.size());
743
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
Line
Count
Source
728
345
    void merge(const PercentileExactState& rhs) {
729
345
        if (!rhs.inited_flag) {
730
84
            return;
731
84
        }
732
733
261
        if (values.empty()) {
734
165
            levels = rhs.levels;
735
165
            inited_flag = true;
736
165
        } else if (rhs.values.empty()) {
737
18
            return;
738
78
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
24
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
24
                            "percentile aggregate states have incompatible quantiles");
741
24
        }
742
219
        _append(rhs.values.data(), rhs.values.size());
743
219
    }
744
745
727
    void reset() {
746
727
        values.clear();
747
727
        levels.clear();
748
727
        inited_flag = false;
749
727
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5resetEv
Line
Count
Source
745
4
    void reset() {
746
4
        values.clear();
747
4
        levels.clear();
748
4
        inited_flag = false;
749
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5resetEv
Line
Count
Source
745
111
    void reset() {
746
111
        values.clear();
747
111
        levels.clear();
748
111
        inited_flag = false;
749
111
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5resetEv
Line
Count
Source
745
292
    void reset() {
746
292
        values.clear();
747
292
        levels.clear();
748
292
        inited_flag = false;
749
292
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
745
98
    void reset() {
746
98
        values.clear();
747
98
        levels.clear();
748
98
        inited_flag = false;
749
98
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5resetEv
Line
Count
Source
745
4
    void reset() {
746
4
        values.clear();
747
4
        levels.clear();
748
4
        inited_flag = false;
749
4
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5resetEv
Line
Count
Source
745
5
    void reset() {
746
5
        values.clear();
747
5
        levels.clear();
748
5
        inited_flag = false;
749
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5resetEv
Line
Count
Source
745
213
    void reset() {
746
213
        values.clear();
747
213
        levels.clear();
748
213
        inited_flag = false;
749
213
    }
750
751
637
    double get() const {
752
637
        if (!inited_flag || levels.empty() || values.empty()) {
753
135
            return std::numeric_limits<double>::quiet_NaN();
754
135
        }
755
756
637
        DCHECK_EQ(levels.quantiles.size(), 1);
757
502
        return _get_result(levels.quantiles[0]);
758
637
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE3getEv
Line
Count
Source
751
30
    double get() const {
752
30
        if (!inited_flag || levels.empty() || values.empty()) {
753
1
            return std::numeric_limits<double>::quiet_NaN();
754
1
        }
755
756
30
        DCHECK_EQ(levels.quantiles.size(), 1);
757
29
        return _get_result(levels.quantiles[0]);
758
30
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE3getEv
Line
Count
Source
751
177
    double get() const {
752
177
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
177
        DCHECK_EQ(levels.quantiles.size(), 1);
757
177
        return _get_result(levels.quantiles[0]);
758
177
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE3getEv
Line
Count
Source
751
69
    double get() const {
752
69
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
69
        DCHECK_EQ(levels.quantiles.size(), 1);
757
69
        return _get_result(levels.quantiles[0]);
758
69
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
751
67
    double get() const {
752
67
        if (!inited_flag || levels.empty() || values.empty()) {
753
1
            return std::numeric_limits<double>::quiet_NaN();
754
1
        }
755
756
67
        DCHECK_EQ(levels.quantiles.size(), 1);
757
66
        return _get_result(levels.quantiles[0]);
758
67
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE3getEv
Line
Count
Source
751
1
    double get() const {
752
1
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
1
        DCHECK_EQ(levels.quantiles.size(), 1);
757
1
        return _get_result(levels.quantiles[0]);
758
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE3getEv
Line
Count
Source
751
2
    double get() const {
752
2
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
2
        DCHECK_EQ(levels.quantiles.size(), 1);
757
2
        return _get_result(levels.quantiles[0]);
758
2
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE3getEv
Line
Count
Source
751
291
    double get() const {
752
291
        if (!inited_flag || levels.empty() || values.empty()) {
753
133
            return std::numeric_limits<double>::quiet_NaN();
754
133
        }
755
756
291
        DCHECK_EQ(levels.quantiles.size(), 1);
757
158
        return _get_result(levels.quantiles[0]);
758
291
    }
759
760
432
    void insert_result_into(IColumn& to) const {
761
432
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
432
        if (!inited_flag || levels.empty()) {
763
22
            return;
764
22
        }
765
766
410
        size_t old_size = column_data.size();
767
410
        size_t size = levels.quantiles.size();
768
410
        column_data.resize(old_size + size);
769
410
        auto* result = column_data.data() + old_size;
770
771
410
        if (values.empty()) {
772
84
            for (size_t i = 0; i < size; ++i) {
773
43
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
43
            }
775
41
            return;
776
41
        }
777
778
369
        if (values.size() == 1) {
779
608
            for (size_t i = 0; i < size; ++i) {
780
404
                result[i] = static_cast<double>(values.front());
781
404
            }
782
204
            return;
783
204
        }
784
785
165
        size_t prev_index = 0;
786
165
        const auto& quantiles = levels.quantiles;
787
165
        const auto& permutation = levels.get_permutation();
788
535
        for (size_t i = 0; i < size; ++i) {
789
370
            auto level_index = permutation[i];
790
370
            auto level = quantiles[level_index];
791
370
            double u = static_cast<double>(values.size() - 1) * level;
792
370
            auto index = static_cast<size_t>(u);
793
794
370
            if (index + 1 >= values.size()) {
795
4
                result[level_index] =
796
4
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
366
            } else {
798
366
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
366
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
366
                result[level_index] =
801
366
                        static_cast<double>(values[index]) +
802
366
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
366
                                                            static_cast<double>(values[index]));
804
366
                prev_index = index;
805
366
            }
806
370
        }
807
165
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
12
    void insert_result_into(IColumn& to) const {
761
12
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
12
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
11
        size_t old_size = column_data.size();
767
11
        size_t size = levels.quantiles.size();
768
11
        column_data.resize(old_size + size);
769
11
        auto* result = column_data.data() + old_size;
770
771
11
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
11
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
3
        size_t prev_index = 0;
786
3
        const auto& quantiles = levels.quantiles;
787
3
        const auto& permutation = levels.get_permutation();
788
11
        for (size_t i = 0; i < size; ++i) {
789
8
            auto level_index = permutation[i];
790
8
            auto level = quantiles[level_index];
791
8
            double u = static_cast<double>(values.size() - 1) * level;
792
8
            auto index = static_cast<size_t>(u);
793
794
8
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
8
            } else {
798
8
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
8
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
8
                result[level_index] =
801
8
                        static_cast<double>(values[index]) +
802
8
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
8
                                                            static_cast<double>(values[index]));
804
8
                prev_index = index;
805
8
            }
806
8
        }
807
3
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
13
    void insert_result_into(IColumn& to) const {
761
13
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
13
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
12
        size_t old_size = column_data.size();
767
12
        size_t size = levels.quantiles.size();
768
12
        column_data.resize(old_size + size);
769
12
        auto* result = column_data.data() + old_size;
770
771
12
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
12
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
4
        size_t prev_index = 0;
786
4
        const auto& quantiles = levels.quantiles;
787
4
        const auto& permutation = levels.get_permutation();
788
15
        for (size_t i = 0; i < size; ++i) {
789
11
            auto level_index = permutation[i];
790
11
            auto level = quantiles[level_index];
791
11
            double u = static_cast<double>(values.size() - 1) * level;
792
11
            auto index = static_cast<size_t>(u);
793
794
11
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
11
            } else {
798
11
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
11
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
11
                result[level_index] =
801
11
                        static_cast<double>(values[index]) +
802
11
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
11
                                                            static_cast<double>(values[index]));
804
11
                prev_index = index;
805
11
            }
806
11
        }
807
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
184
    void insert_result_into(IColumn& to) const {
761
184
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
184
        if (!inited_flag || levels.empty()) {
763
4
            return;
764
4
        }
765
766
180
        size_t old_size = column_data.size();
767
180
        size_t size = levels.quantiles.size();
768
180
        column_data.resize(old_size + size);
769
180
        auto* result = column_data.data() + old_size;
770
771
180
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
180
        if (values.size() == 1) {
779
297
            for (size_t i = 0; i < size; ++i) {
780
206
                result[i] = static_cast<double>(values.front());
781
206
            }
782
91
            return;
783
91
        }
784
785
89
        size_t prev_index = 0;
786
89
        const auto& quantiles = levels.quantiles;
787
89
        const auto& permutation = levels.get_permutation();
788
301
        for (size_t i = 0; i < size; ++i) {
789
212
            auto level_index = permutation[i];
790
212
            auto level = quantiles[level_index];
791
212
            double u = static_cast<double>(values.size() - 1) * level;
792
212
            auto index = static_cast<size_t>(u);
793
794
212
            if (index + 1 >= values.size()) {
795
4
                result[level_index] =
796
4
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
208
            } else {
798
208
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
208
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
208
                result[level_index] =
801
208
                        static_cast<double>(values[index]) +
802
208
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
208
                                                            static_cast<double>(values[index]));
804
208
                prev_index = index;
805
208
            }
806
212
        }
807
89
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
13
    void insert_result_into(IColumn& to) const {
761
13
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
13
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
12
        size_t old_size = column_data.size();
767
12
        size_t size = levels.quantiles.size();
768
12
        column_data.resize(old_size + size);
769
12
        auto* result = column_data.data() + old_size;
770
771
12
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
12
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
4
        size_t prev_index = 0;
786
4
        const auto& quantiles = levels.quantiles;
787
4
        const auto& permutation = levels.get_permutation();
788
15
        for (size_t i = 0; i < size; ++i) {
789
11
            auto level_index = permutation[i];
790
11
            auto level = quantiles[level_index];
791
11
            double u = static_cast<double>(values.size() - 1) * level;
792
11
            auto index = static_cast<size_t>(u);
793
794
11
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
11
            } else {
798
11
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
11
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
11
                result[level_index] =
801
11
                        static_cast<double>(values[index]) +
802
11
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
11
                                                            static_cast<double>(values[index]));
804
11
                prev_index = index;
805
11
            }
806
11
        }
807
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
12
    void insert_result_into(IColumn& to) const {
761
12
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
12
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
11
        size_t old_size = column_data.size();
767
11
        size_t size = levels.quantiles.size();
768
11
        column_data.resize(old_size + size);
769
11
        auto* result = column_data.data() + old_size;
770
771
11
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
11
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
3
        size_t prev_index = 0;
786
3
        const auto& quantiles = levels.quantiles;
787
3
        const auto& permutation = levels.get_permutation();
788
11
        for (size_t i = 0; i < size; ++i) {
789
8
            auto level_index = permutation[i];
790
8
            auto level = quantiles[level_index];
791
8
            double u = static_cast<double>(values.size() - 1) * level;
792
8
            auto index = static_cast<size_t>(u);
793
794
8
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
8
            } else {
798
8
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
8
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
8
                result[level_index] =
801
8
                        static_cast<double>(values[index]) +
802
8
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
8
                                                            static_cast<double>(values[index]));
804
8
                prev_index = index;
805
8
            }
806
8
        }
807
3
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
2
    void insert_result_into(IColumn& to) const {
761
2
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
2
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
1
        size_t old_size = column_data.size();
767
1
        size_t size = levels.quantiles.size();
768
1
        column_data.resize(old_size + size);
769
1
        auto* result = column_data.data() + old_size;
770
771
1
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
1
        if (values.size() == 1) {
779
0
            for (size_t i = 0; i < size; ++i) {
780
0
                result[i] = static_cast<double>(values.front());
781
0
            }
782
0
            return;
783
0
        }
784
785
1
        size_t prev_index = 0;
786
1
        const auto& quantiles = levels.quantiles;
787
1
        const auto& permutation = levels.get_permutation();
788
3
        for (size_t i = 0; i < size; ++i) {
789
2
            auto level_index = permutation[i];
790
2
            auto level = quantiles[level_index];
791
2
            double u = static_cast<double>(values.size() - 1) * level;
792
2
            auto index = static_cast<size_t>(u);
793
794
2
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
2
            } else {
798
2
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
2
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
2
                result[level_index] =
801
2
                        static_cast<double>(values[index]) +
802
2
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
2
                                                            static_cast<double>(values[index]));
804
2
                prev_index = index;
805
2
            }
806
2
        }
807
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
196
    void insert_result_into(IColumn& to) const {
761
196
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
196
        if (!inited_flag || levels.empty()) {
763
13
            return;
764
13
        }
765
766
183
        size_t old_size = column_data.size();
767
183
        size_t size = levels.quantiles.size();
768
183
        column_data.resize(old_size + size);
769
183
        auto* result = column_data.data() + old_size;
770
771
183
        if (values.empty()) {
772
84
            for (size_t i = 0; i < size; ++i) {
773
43
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
43
            }
775
41
            return;
776
41
        }
777
778
142
        if (values.size() == 1) {
779
183
            for (size_t i = 0; i < size; ++i) {
780
102
                result[i] = static_cast<double>(values.front());
781
102
            }
782
81
            return;
783
81
        }
784
785
61
        size_t prev_index = 0;
786
61
        const auto& quantiles = levels.quantiles;
787
61
        const auto& permutation = levels.get_permutation();
788
179
        for (size_t i = 0; i < size; ++i) {
789
118
            auto level_index = permutation[i];
790
118
            auto level = quantiles[level_index];
791
118
            double u = static_cast<double>(values.size() - 1) * level;
792
118
            auto index = static_cast<size_t>(u);
793
794
118
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
118
            } else {
798
118
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
118
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
118
                result[level_index] =
801
118
                        static_cast<double>(values[index]) +
802
118
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
118
                                                            static_cast<double>(values[index]));
804
118
                prev_index = index;
805
118
            }
806
118
        }
807
61
    }
808
809
private:
810
688
    void _set_single_level(double quantile) {
811
688
        DCHECK(levels.empty());
812
688
        check_quantile(quantile);
813
688
        levels.quantiles.push_back(quantile);
814
688
        levels.permutation.push_back(0);
815
688
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE17_set_single_levelEd
Line
Count
Source
810
6
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
6
        check_quantile(quantile);
813
6
        levels.quantiles.push_back(quantile);
814
6
        levels.permutation.push_back(0);
815
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE17_set_single_levelEd
Line
Count
Source
810
99
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
99
        check_quantile(quantile);
813
99
        levels.quantiles.push_back(quantile);
814
99
        levels.permutation.push_back(0);
815
99
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE17_set_single_levelEd
Line
Count
Source
810
99
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
99
        check_quantile(quantile);
813
99
        levels.quantiles.push_back(quantile);
814
99
        levels.permutation.push_back(0);
815
99
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE17_set_single_levelEd
Line
Count
Source
810
117
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
117
        check_quantile(quantile);
813
117
        levels.quantiles.push_back(quantile);
814
117
        levels.permutation.push_back(0);
815
117
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE17_set_single_levelEd
Line
Count
Source
810
2
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
2
        check_quantile(quantile);
813
2
        levels.quantiles.push_back(quantile);
814
2
        levels.permutation.push_back(0);
815
2
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE17_set_single_levelEd
Line
Count
Source
810
3
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
3
        check_quantile(quantile);
813
3
        levels.quantiles.push_back(quantile);
814
3
        levels.permutation.push_back(0);
815
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE17_set_single_levelEd
Line
Count
Source
810
362
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
362
        check_quantile(quantile);
813
362
        levels.quantiles.push_back(quantile);
814
362
        levels.permutation.push_back(0);
815
362
    }
816
817
    void _set_many_levels(const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
818
568
                          size_t start, int64_t arg_size) {
819
568
        DCHECK(levels.empty());
820
568
        size_t size = cast_set<size_t>(arg_size);
821
568
        levels.quantiles.resize(size);
822
568
        levels.permutation.resize(size);
823
1.63k
        for (size_t i = 0; i < size; ++i) {
824
1.06k
            if (null_maps[start + i]) {
825
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
1
                                "quantiles in func percentile_array should not have null");
827
1
            }
828
1.06k
            check_quantile(quantiles_data[start + i]);
829
1.06k
            levels.quantiles[i] = quantiles_data[start + i];
830
1.06k
            levels.permutation[i] = i;
831
1.06k
        }
832
568
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
12
                          size_t start, int64_t arg_size) {
819
12
        DCHECK(levels.empty());
820
12
        size_t size = cast_set<size_t>(arg_size);
821
12
        levels.quantiles.resize(size);
822
12
        levels.permutation.resize(size);
823
46
        for (size_t i = 0; i < size; ++i) {
824
34
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
34
            check_quantile(quantiles_data[start + i]);
829
34
            levels.quantiles[i] = quantiles_data[start + i];
830
34
            levels.permutation[i] = i;
831
34
        }
832
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
16
                          size_t start, int64_t arg_size) {
819
16
        DCHECK(levels.empty());
820
16
        size_t size = cast_set<size_t>(arg_size);
821
16
        levels.quantiles.resize(size);
822
16
        levels.permutation.resize(size);
823
62
        for (size_t i = 0; i < size; ++i) {
824
46
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
46
            check_quantile(quantiles_data[start + i]);
829
46
            levels.quantiles[i] = quantiles_data[start + i];
830
46
            levels.permutation[i] = i;
831
46
        }
832
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
259
                          size_t start, int64_t arg_size) {
819
259
        DCHECK(levels.empty());
820
259
        size_t size = cast_set<size_t>(arg_size);
821
259
        levels.quantiles.resize(size);
822
259
        levels.permutation.resize(size);
823
849
        for (size_t i = 0; i < size; ++i) {
824
590
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
590
            check_quantile(quantiles_data[start + i]);
829
590
            levels.quantiles[i] = quantiles_data[start + i];
830
590
            levels.permutation[i] = i;
831
590
        }
832
259
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
16
                          size_t start, int64_t arg_size) {
819
16
        DCHECK(levels.empty());
820
16
        size_t size = cast_set<size_t>(arg_size);
821
16
        levels.quantiles.resize(size);
822
16
        levels.permutation.resize(size);
823
59
        for (size_t i = 0; i < size; ++i) {
824
44
            if (null_maps[start + i]) {
825
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
1
                                "quantiles in func percentile_array should not have null");
827
1
            }
828
43
            check_quantile(quantiles_data[start + i]);
829
43
            levels.quantiles[i] = quantiles_data[start + i];
830
43
            levels.permutation[i] = i;
831
43
        }
832
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
12
                          size_t start, int64_t arg_size) {
819
12
        DCHECK(levels.empty());
820
12
        size_t size = cast_set<size_t>(arg_size);
821
12
        levels.quantiles.resize(size);
822
12
        levels.permutation.resize(size);
823
46
        for (size_t i = 0; i < size; ++i) {
824
34
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
34
            check_quantile(quantiles_data[start + i]);
829
34
            levels.quantiles[i] = quantiles_data[start + i];
830
34
            levels.permutation[i] = i;
831
34
        }
832
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
2
                          size_t start, int64_t arg_size) {
819
2
        DCHECK(levels.empty());
820
2
        size_t size = cast_set<size_t>(arg_size);
821
2
        levels.quantiles.resize(size);
822
2
        levels.permutation.resize(size);
823
6
        for (size_t i = 0; i < size; ++i) {
824
4
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
4
            check_quantile(quantiles_data[start + i]);
829
4
            levels.quantiles[i] = quantiles_data[start + i];
830
4
            levels.permutation[i] = i;
831
4
        }
832
2
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
251
                          size_t start, int64_t arg_size) {
819
251
        DCHECK(levels.empty());
820
251
        size_t size = cast_set<size_t>(arg_size);
821
251
        levels.quantiles.resize(size);
822
251
        levels.permutation.resize(size);
823
565
        for (size_t i = 0; i < size; ++i) {
824
314
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
314
            check_quantile(quantiles_data[start + i]);
829
314
            levels.quantiles[i] = quantiles_data[start + i];
830
314
            levels.permutation[i] = i;
831
314
        }
832
251
    }
833
834
2.82k
    void _append(const ValueType* data, size_t count) {
835
2.82k
        if (count == 0) {
836
72
            return;
837
72
        }
838
2.74k
        values.reserve(values.size() + count);
839
2.74k
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.80k
            for (size_t i = 0; i < count; ++i) {
841
914
                if (!std::isnan(data[i])) {
842
627
                    values.push_back(data[i]);
843
627
                }
844
914
            }
845
1.86k
        } else {
846
1.86k
            values.insert_assume_reserved(data, data + count);
847
1.86k
        }
848
2.74k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE7_appendEPKam
Line
Count
Source
834
50
    void _append(const ValueType* data, size_t count) {
835
50
        if (count == 0) {
836
0
            return;
837
0
        }
838
50
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
50
        } else {
846
50
            values.insert_assume_reserved(data, data + count);
847
50
        }
848
50
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE7_appendEPKsm
Line
Count
Source
834
349
    void _append(const ValueType* data, size_t count) {
835
349
        if (count == 0) {
836
0
            return;
837
0
        }
838
349
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
349
        } else {
846
349
            values.insert_assume_reserved(data, data + count);
847
349
        }
848
349
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE7_appendEPKim
Line
Count
Source
834
1.11k
    void _append(const ValueType* data, size_t count) {
835
1.11k
        if (count == 0) {
836
0
            return;
837
0
        }
838
1.11k
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
1.11k
        } else {
846
1.11k
            values.insert_assume_reserved(data, data + count);
847
1.11k
        }
848
1.11k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE7_appendEPKlm
Line
Count
Source
834
325
    void _append(const ValueType* data, size_t count) {
835
325
        if (count == 0) {
836
0
            return;
837
0
        }
838
325
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
325
        } else {
846
325
            values.insert_assume_reserved(data, data + count);
847
325
        }
848
325
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE7_appendEPKnm
Line
Count
Source
834
22
    void _append(const ValueType* data, size_t count) {
835
22
        if (count == 0) {
836
0
            return;
837
0
        }
838
22
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
22
        } else {
846
22
            values.insert_assume_reserved(data, data + count);
847
22
        }
848
22
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE7_appendEPKfm
Line
Count
Source
834
14
    void _append(const ValueType* data, size_t count) {
835
14
        if (count == 0) {
836
0
            return;
837
0
        }
838
14
        values.reserve(values.size() + count);
839
14
        if constexpr (std::is_floating_point_v<ValueType>) {
840
31
            for (size_t i = 0; i < count; ++i) {
841
17
                if (!std::isnan(data[i])) {
842
16
                    values.push_back(data[i]);
843
16
                }
844
17
            }
845
        } else {
846
            values.insert_assume_reserved(data, data + count);
847
        }
848
14
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE7_appendEPKdm
Line
Count
Source
834
947
    void _append(const ValueType* data, size_t count) {
835
947
        if (count == 0) {
836
72
            return;
837
72
        }
838
875
        values.reserve(values.size() + count);
839
875
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.77k
            for (size_t i = 0; i < count; ++i) {
841
897
                if (!std::isnan(data[i])) {
842
611
                    values.push_back(data[i]);
843
611
                }
844
897
            }
845
        } else {
846
            values.insert_assume_reserved(data, data + count);
847
        }
848
875
    }
849
850
502
    double _get_result(double quantile) const {
851
502
        if (values.size() == 1) {
852
198
            return static_cast<double>(values.front());
853
198
        }
854
855
304
        double u = static_cast<double>(values.size() - 1) * quantile;
856
304
        auto index = static_cast<size_t>(u);
857
858
304
        if (index + 1 >= values.size()) {
859
12
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
12
        }
861
862
292
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
292
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
292
        return static_cast<double>(values[index]) +
866
292
               (u - static_cast<double>(index)) *
867
292
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
304
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE11_get_resultEd
Line
Count
Source
850
29
    double _get_result(double quantile) const {
851
29
        if (values.size() == 1) {
852
4
            return static_cast<double>(values.front());
853
4
        }
854
855
25
        double u = static_cast<double>(values.size() - 1) * quantile;
856
25
        auto index = static_cast<size_t>(u);
857
858
25
        if (index + 1 >= values.size()) {
859
6
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
6
        }
861
862
19
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
19
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
19
        return static_cast<double>(values[index]) +
866
19
               (u - static_cast<double>(index)) *
867
19
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
25
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE11_get_resultEd
Line
Count
Source
850
177
    double _get_result(double quantile) const {
851
177
        if (values.size() == 1) {
852
42
            return static_cast<double>(values.front());
853
42
        }
854
855
135
        double u = static_cast<double>(values.size() - 1) * quantile;
856
135
        auto index = static_cast<size_t>(u);
857
858
135
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
135
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
135
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
135
        return static_cast<double>(values[index]) +
866
135
               (u - static_cast<double>(index)) *
867
135
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
135
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE11_get_resultEd
Line
Count
Source
850
69
    double _get_result(double quantile) const {
851
69
        if (values.size() == 1) {
852
21
            return static_cast<double>(values.front());
853
21
        }
854
855
48
        double u = static_cast<double>(values.size() - 1) * quantile;
856
48
        auto index = static_cast<size_t>(u);
857
858
48
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
48
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
48
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
48
        return static_cast<double>(values[index]) +
866
48
               (u - static_cast<double>(index)) *
867
48
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
48
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE11_get_resultEd
Line
Count
Source
850
66
    double _get_result(double quantile) const {
851
66
        if (values.size() == 1) {
852
35
            return static_cast<double>(values.front());
853
35
        }
854
855
31
        double u = static_cast<double>(values.size() - 1) * quantile;
856
31
        auto index = static_cast<size_t>(u);
857
858
31
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
31
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
31
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
31
        return static_cast<double>(values[index]) +
866
31
               (u - static_cast<double>(index)) *
867
31
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
31
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE11_get_resultEd
Line
Count
Source
850
1
    double _get_result(double quantile) const {
851
1
        if (values.size() == 1) {
852
0
            return static_cast<double>(values.front());
853
0
        }
854
855
1
        double u = static_cast<double>(values.size() - 1) * quantile;
856
1
        auto index = static_cast<size_t>(u);
857
858
1
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
1
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
1
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
1
        return static_cast<double>(values[index]) +
866
1
               (u - static_cast<double>(index)) *
867
1
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE11_get_resultEd
Line
Count
Source
850
2
    double _get_result(double quantile) const {
851
2
        if (values.size() == 1) {
852
0
            return static_cast<double>(values.front());
853
0
        }
854
855
2
        double u = static_cast<double>(values.size() - 1) * quantile;
856
2
        auto index = static_cast<size_t>(u);
857
858
2
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
2
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
2
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
2
        return static_cast<double>(values[index]) +
866
2
               (u - static_cast<double>(index)) *
867
2
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
2
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE11_get_resultEd
Line
Count
Source
850
158
    double _get_result(double quantile) const {
851
158
        if (values.size() == 1) {
852
96
            return static_cast<double>(values.front());
853
96
        }
854
855
62
        double u = static_cast<double>(values.size() - 1) * quantile;
856
62
        auto index = static_cast<size_t>(u);
857
858
62
        if (index + 1 >= values.size()) {
859
6
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
6
        }
861
862
56
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
56
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
56
        return static_cast<double>(values[index]) +
866
56
               (u - static_cast<double>(index)) *
867
56
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
62
    }
869
870
    mutable Array values;
871
    mutable PercentileLevels levels;
872
    bool inited_flag = false;
873
};
874
875
template <PrimitiveType T>
876
class AggregateFunctionPercentile final
877
        : public IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>,
878
          MultiExpression,
879
          NullableAggregateFunction {
880
public:
881
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
882
    using Base = IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>;
883
860
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
38
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
34
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
787
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
1
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
884
885
111
    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
885
111
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
886
887
99
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
887
10
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE15get_return_typeEv
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
887
28
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
887
33
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE15get_return_typeEv
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
887
28
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
888
889
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
890
214
             Arena&) const override {
891
214
        const auto& sources =
892
214
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
214
        const auto& quantile =
894
214
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
214
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
214
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
214
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
8
             Arena&) const override {
891
8
        const auto& sources =
892
8
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
8
        const auto& quantile =
894
8
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
8
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
8
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
8
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
44
             Arena&) const override {
891
44
        const auto& sources =
892
44
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
44
        const auto& quantile =
894
44
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
44
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
44
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
44
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
122
             Arena&) const override {
891
122
        const auto& sources =
892
122
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
122
        const auto& quantile =
894
122
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
122
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
122
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
122
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
40
             Arena&) const override {
891
40
        const auto& sources =
892
40
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
40
        const auto& quantile =
894
40
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
40
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
40
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
40
    }
898
899
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
900
0
                                Arena&) const override {
901
0
        const auto& sources =
902
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
903
0
        const auto& quantile =
904
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
905
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
906
0
        AggregateFunctionPercentile::data(place).add_batch(sources.get_data(),
907
0
                                                           quantile.get_data()[0]);
908
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
909
910
63
    void check_input_columns_type(const IColumn** columns) const override {
911
63
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
63
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
63
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
8
    void check_input_columns_type(const IColumn** columns) const override {
911
8
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
8
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
8
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
22
    void check_input_columns_type(const IColumn** columns) const override {
911
22
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
22
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
22
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
33
    void check_input_columns_type(const IColumn** columns) const override {
911
33
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
33
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
33
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
914
915
76
    void reset(AggregateDataPtr __restrict place) const override {
916
76
        AggregateFunctionPercentile::data(place).reset();
917
76
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5resetEPc
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5resetEPc
Line
Count
Source
915
74
    void reset(AggregateDataPtr __restrict place) const override {
916
74
        AggregateFunctionPercentile::data(place).reset();
917
74
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
915
2
    void reset(AggregateDataPtr __restrict place) const override {
916
2
        AggregateFunctionPercentile::data(place).reset();
917
2
    }
918
919
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
920
312
               Arena&) const override {
921
312
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
312
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
8
               Arena&) const override {
921
8
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
8
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
59
               Arena&) const override {
921
59
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
59
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
215
               Arena&) const override {
921
215
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
215
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
30
               Arena&) const override {
921
30
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
30
    }
923
924
301
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
301
        AggregateFunctionPercentile::data(place).write(buf);
926
301
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
8
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
8
        AggregateFunctionPercentile::data(place).write(buf);
926
8
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
52
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
52
        AggregateFunctionPercentile::data(place).write(buf);
926
52
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
227
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
227
        AggregateFunctionPercentile::data(place).write(buf);
926
227
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
14
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
14
        AggregateFunctionPercentile::data(place).write(buf);
926
14
    }
927
928
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
929
293
                     Arena&) const override {
930
293
        AggregateFunctionPercentile::data(place).read(buf);
931
293
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
8
                     Arena&) const override {
930
8
        AggregateFunctionPercentile::data(place).read(buf);
931
8
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
52
                     Arena&) const override {
930
52
        AggregateFunctionPercentile::data(place).read(buf);
931
52
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
215
                     Arena&) const override {
930
215
        AggregateFunctionPercentile::data(place).read(buf);
931
215
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
18
                     Arena&) const override {
930
18
        AggregateFunctionPercentile::data(place).read(buf);
931
18
    }
932
933
58
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
58
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
58
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
58
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
6
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
6
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
6
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
6
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
24
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
24
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
24
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
24
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
28
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
28
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
28
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
28
    }
937
};
938
939
template <PrimitiveType T>
940
class AggregateFunctionPercentileArray final
941
        : public IAggregateFunctionDataHelper<PercentileState<T>,
942
                                              AggregateFunctionPercentileArray<T>>,
943
          MultiExpression,
944
          NotNullableAggregateFunction {
945
public:
946
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
947
    using Base =
948
            IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentileArray<T>>;
949
441
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
949
116
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
949
321
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
949
1
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
949
3
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
950
951
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
951
20
    String get_name() const override { return "percentile_array"; }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
951
1
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
952
953
120
    DataTypePtr get_return_type() const override {
954
120
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
955
120
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
953
44
    DataTypePtr get_return_type() const override {
954
44
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
955
44
    }
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
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
953
76
    DataTypePtr get_return_type() const override {
954
76
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
955
76
    }
956
957
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
958
237
             Arena&) const override {
959
237
        const auto& sources =
960
237
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
961
237
        const auto& quantile_array =
962
237
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
963
237
        const auto& offset_column_data = quantile_array.get_offsets();
964
237
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
965
237
                                        quantile_array.get_data())
966
237
                                        .get_null_map_data();
967
237
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
968
237
                                            quantile_array.get_data())
969
237
                                            .get_nested_column();
970
237
        const auto& nested_column_data =
971
237
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
972
973
237
        AggregateFunctionPercentileArray::data(place).add(
974
237
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
975
237
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
976
237
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
958
24
             Arena&) const override {
959
24
        const auto& sources =
960
24
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
961
24
        const auto& quantile_array =
962
24
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
963
24
        const auto& offset_column_data = quantile_array.get_offsets();
964
24
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
965
24
                                        quantile_array.get_data())
966
24
                                        .get_null_map_data();
967
24
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
968
24
                                            quantile_array.get_data())
969
24
                                            .get_nested_column();
970
24
        const auto& nested_column_data =
971
24
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
972
973
24
        AggregateFunctionPercentileArray::data(place).add(
974
24
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
975
24
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
976
24
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
958
100
             Arena&) const override {
959
100
        const auto& sources =
960
100
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
961
100
        const auto& quantile_array =
962
100
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
963
100
        const auto& offset_column_data = quantile_array.get_offsets();
964
100
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
965
100
                                        quantile_array.get_data())
966
100
                                        .get_null_map_data();
967
100
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
968
100
                                            quantile_array.get_data())
969
100
                                            .get_nested_column();
970
100
        const auto& nested_column_data =
971
100
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
972
973
100
        AggregateFunctionPercentileArray::data(place).add(
974
100
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
975
100
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
976
100
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
958
113
             Arena&) const override {
959
113
        const auto& sources =
960
113
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
961
113
        const auto& quantile_array =
962
113
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
963
113
        const auto& offset_column_data = quantile_array.get_offsets();
964
113
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
965
113
                                        quantile_array.get_data())
966
113
                                        .get_null_map_data();
967
113
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
968
113
                                            quantile_array.get_data())
969
113
                                            .get_nested_column();
970
113
        const auto& nested_column_data =
971
113
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
972
973
113
        AggregateFunctionPercentileArray::data(place).add(
974
113
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
975
113
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
976
113
    }
977
978
33
    void check_input_columns_type(const IColumn** columns) const override {
979
33
        this->template check_argument_column_type<ColVecType>(columns[0]);
980
33
        check_percentile_array_column_type(*this, *columns[1], 1);
981
33
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
978
24
    void check_input_columns_type(const IColumn** columns) const override {
979
24
        this->template check_argument_column_type<ColVecType>(columns[0]);
980
24
        check_percentile_array_column_type(*this, *columns[1], 1);
981
24
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
978
9
    void check_input_columns_type(const IColumn** columns) const override {
979
9
        this->template check_argument_column_type<ColVecType>(columns[0]);
980
9
        check_percentile_array_column_type(*this, *columns[1], 1);
981
9
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
982
983
31
    void reset(AggregateDataPtr __restrict place) const override {
984
31
        AggregateFunctionPercentileArray::data(place).reset();
985
31
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5resetEPc
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5resetEPc
Line
Count
Source
983
26
    void reset(AggregateDataPtr __restrict place) const override {
984
26
        AggregateFunctionPercentileArray::data(place).reset();
985
26
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
983
5
    void reset(AggregateDataPtr __restrict place) const override {
984
5
        AggregateFunctionPercentileArray::data(place).reset();
985
5
    }
986
987
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
988
226
               Arena&) const override {
989
226
        AggregateFunctionPercentileArray::data(place).merge(
990
226
                AggregateFunctionPercentileArray::data(rhs));
991
226
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
988
30
               Arena&) const override {
989
30
        AggregateFunctionPercentileArray::data(place).merge(
990
30
                AggregateFunctionPercentileArray::data(rhs));
991
30
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
988
121
               Arena&) const override {
989
121
        AggregateFunctionPercentileArray::data(place).merge(
990
121
                AggregateFunctionPercentileArray::data(rhs));
991
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
988
75
               Arena&) const override {
989
75
        AggregateFunctionPercentileArray::data(place).merge(
990
75
                AggregateFunctionPercentileArray::data(rhs));
991
75
    }
992
993
224
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
994
224
        AggregateFunctionPercentileArray::data(place).write(buf);
995
224
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
993
30
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
994
30
        AggregateFunctionPercentileArray::data(place).write(buf);
995
30
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
993
160
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
994
160
        AggregateFunctionPercentileArray::data(place).write(buf);
995
160
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
993
34
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
994
34
        AggregateFunctionPercentileArray::data(place).write(buf);
995
34
    }
996
997
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
998
193
                     Arena&) const override {
999
193
        AggregateFunctionPercentileArray::data(place).read(buf);
1000
193
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
998
30
                     Arena&) const override {
999
30
        AggregateFunctionPercentileArray::data(place).read(buf);
1000
30
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
998
121
                     Arena&) const override {
999
121
        AggregateFunctionPercentileArray::data(place).read(buf);
1000
121
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
998
42
                     Arena&) const override {
999
42
        AggregateFunctionPercentileArray::data(place).read(buf);
1000
42
    }
1001
1002
80
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1003
80
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1004
80
        auto& to_nested_col = to_arr.get_data();
1005
80
        if (is_column_nullable(to_nested_col)) {
1006
80
            auto col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1007
80
            AggregateFunctionPercentileArray::data(place).insert_result_into(
1008
80
                    col_null->get_nested_column());
1009
80
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1010
80
        } else {
1011
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(to_nested_col);
1012
0
        }
1013
80
        to_arr.get_offsets().push_back(to_nested_col.size());
1014
80
    }
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1002
4
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1003
4
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1004
4
        auto& to_nested_col = to_arr.get_data();
1005
4
        if (is_column_nullable(to_nested_col)) {
1006
4
            auto col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1007
4
            AggregateFunctionPercentileArray::data(place).insert_result_into(
1008
4
                    col_null->get_nested_column());
1009
4
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1010
4
        } else {
1011
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(to_nested_col);
1012
0
        }
1013
4
        to_arr.get_offsets().push_back(to_nested_col.size());
1014
4
    }
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
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1002
76
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1003
76
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1004
76
        auto& to_nested_col = to_arr.get_data();
1005
76
        if (is_column_nullable(to_nested_col)) {
1006
76
            auto col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1007
76
            AggregateFunctionPercentileArray::data(place).insert_result_into(
1008
76
                    col_null->get_nested_column());
1009
76
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1010
76
        } else {
1011
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(to_nested_col);
1012
0
        }
1013
76
        to_arr.get_offsets().push_back(to_nested_col.size());
1014
76
    }
1015
};
1016
1017
template <PrimitiveType T>
1018
class AggregateFunctionPercentileV2 final
1019
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
1020
                                              AggregateFunctionPercentileV2<T>>,
1021
          MultiExpression,
1022
          NullableAggregateFunction {
1023
public:
1024
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
1025
    using Base =
1026
            IAggregateFunctionDataHelper<PercentileExactState<T>, AggregateFunctionPercentileV2<T>>;
1027
147
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
9
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
15
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
46
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
43
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
3
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
5
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
26
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
1028
1029
40
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Line
Count
Source
1029
4
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Line
Count
Source
1029
23
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
Line
Count
Source
1029
1
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
1029
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
1029
10
    String get_name() const override { return "percentile_v2"; }
1030
1031
1.29k
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
1031
80
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
1031
405
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1031
222
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1031
180
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
1031
11
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Line
Count
Source
1031
17
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
1031
381
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
1032
1033
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
1034
1.26k
             Arena&) const override {
1035
1.26k
        const auto& sources =
1036
1.26k
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
1.26k
        const auto& quantile =
1038
1.26k
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
1.26k
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
1.26k
                                                                    quantile.get_data()[0]);
1041
1.26k
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
31
             Arena&) const override {
1035
31
        const auto& sources =
1036
31
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
31
        const auto& quantile =
1038
31
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
31
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
31
                                                                    quantile.get_data()[0]);
1041
31
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
311
             Arena&) const override {
1035
311
        const auto& sources =
1036
311
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
311
        const auto& quantile =
1038
311
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
311
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
311
                                                                    quantile.get_data()[0]);
1041
311
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
288
             Arena&) const override {
1035
288
        const auto& sources =
1036
288
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
288
        const auto& quantile =
1038
288
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
288
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
288
                                                                    quantile.get_data()[0]);
1041
288
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
192
             Arena&) const override {
1035
192
        const auto& sources =
1036
192
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
192
        const auto& quantile =
1038
192
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
192
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
192
                                                                    quantile.get_data()[0]);
1041
192
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
3
             Arena&) const override {
1035
3
        const auto& sources =
1036
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
3
        const auto& quantile =
1038
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
3
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
3
                                                                    quantile.get_data()[0]);
1041
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
6
             Arena&) const override {
1035
6
        const auto& sources =
1036
6
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
6
        const auto& quantile =
1038
6
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
6
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
6
                                                                    quantile.get_data()[0]);
1041
6
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
433
             Arena&) const override {
1035
433
        const auto& sources =
1036
433
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
433
        const auto& quantile =
1038
433
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
433
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
433
                                                                    quantile.get_data()[0]);
1041
433
    }
1042
1043
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
1044
7
                                Arena&) const override {
1045
7
        const auto& sources =
1046
7
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1047
7
        const auto& quantile =
1048
7
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1049
7
        DCHECK_EQ(sources.get_data().size(), batch_size);
1050
7
        AggregateFunctionPercentileV2::data(place).add_single_range(
1051
7
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
1052
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
1044
2
                                Arena&) const override {
1045
2
        const auto& sources =
1046
2
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1047
2
        const auto& quantile =
1048
2
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1049
        DCHECK_EQ(sources.get_data().size(), batch_size);
1050
2
        AggregateFunctionPercentileV2::data(place).add_single_range(
1051
2
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
1052
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
1044
5
                                Arena&) const override {
1045
5
        const auto& sources =
1046
5
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1047
5
        const auto& quantile =
1048
5
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1049
        DCHECK_EQ(sources.get_data().size(), batch_size);
1050
5
        AggregateFunctionPercentileV2::data(place).add_single_range(
1051
5
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
1052
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
1053
1054
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
1055
0
                         const IColumn** columns, Arena&, bool has_null) override {
1056
0
        const auto& sources =
1057
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1058
0
        const auto& quantile =
1059
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1060
0
        DCHECK(!has_null);
1061
0
        AggregateFunctionPercentileV2::data(place).add_single_range(
1062
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
1063
0
                quantile.get_data()[0]);
1064
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
1065
1066
392
    void check_input_columns_type(const IColumn** columns) const override {
1067
392
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
392
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
392
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
30
    void check_input_columns_type(const IColumn** columns) const override {
1067
30
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
30
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
30
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
182
    void check_input_columns_type(const IColumn** columns) const override {
1067
182
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
182
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
182
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
82
    void check_input_columns_type(const IColumn** columns) const override {
1067
82
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
82
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
82
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
61
    void check_input_columns_type(const IColumn** columns) const override {
1067
61
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
61
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
61
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
2
    void check_input_columns_type(const IColumn** columns) const override {
1067
2
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
2
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
3
    void check_input_columns_type(const IColumn** columns) const override {
1067
3
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
3
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
32
    void check_input_columns_type(const IColumn** columns) const override {
1067
32
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
32
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
32
    }
1070
1071
122
    void reset(AggregateDataPtr __restrict place) const override {
1072
122
        AggregateFunctionPercentileV2::data(place).reset();
1073
122
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5resetEPc
Line
Count
Source
1071
102
    void reset(AggregateDataPtr __restrict place) const override {
1072
102
        AggregateFunctionPercentileV2::data(place).reset();
1073
102
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5resetEPc
Line
Count
Source
1071
9
    void reset(AggregateDataPtr __restrict place) const override {
1072
9
        AggregateFunctionPercentileV2::data(place).reset();
1073
9
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
1071
11
    void reset(AggregateDataPtr __restrict place) const override {
1072
11
        AggregateFunctionPercentileV2::data(place).reset();
1073
11
    }
1074
1075
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
1076
342
               Arena&) const override {
1077
342
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
342
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
2
               Arena&) const override {
1077
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
2
               Arena&) const override {
1077
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
60
               Arena&) const override {
1077
60
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
60
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
95
               Arena&) const override {
1077
95
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
95
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
2
               Arena&) const override {
1077
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
3
               Arena&) const override {
1077
3
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
178
               Arena&) const override {
1077
178
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
178
    }
1079
1080
243
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
243
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
243
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
2
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
2
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
58
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
58
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
58
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
95
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
95
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
95
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
2
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
3
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
3
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
81
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
81
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
81
    }
1083
1084
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
1085
247
                     Arena&) const override {
1086
247
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
247
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
2
                     Arena&) const override {
1086
2
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
2
                     Arena&) const override {
1086
2
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
58
                     Arena&) const override {
1086
58
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
58
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
95
                     Arena&) const override {
1086
95
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
95
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
2
                     Arena&) const override {
1086
2
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
3
                     Arena&) const override {
1086
3
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
3
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
85
                     Arena&) const override {
1086
85
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
85
    }
1088
1089
637
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
637
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
637
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
637
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
30
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
30
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
30
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
30
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
177
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
177
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
177
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
177
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
69
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
69
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
69
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
69
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
67
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
67
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
67
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
67
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
1
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
1
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
1
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
1
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
2
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
2
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
2
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
291
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
291
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
291
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
291
    }
1093
};
1094
1095
template <PrimitiveType T>
1096
class AggregateFunctionPercentileArrayV2 final
1097
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
1098
                                              AggregateFunctionPercentileArrayV2<T>>,
1099
          MultiExpression,
1100
          NotNullableAggregateFunction {
1101
public:
1102
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
1103
    using Base = IAggregateFunctionDataHelper<PercentileExactState<T>,
1104
                                              AggregateFunctionPercentileArrayV2<T>>;
1105
114
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
5
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
7
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
57
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
14
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
5
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
3
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1105
23
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
1106
1107
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
1107
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
1107
10
    String get_name() const override { return "percentile_array_v2"; }
1108
1109
670
    DataTypePtr get_return_type() const override {
1110
670
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
670
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
1109
19
    DataTypePtr get_return_type() const override {
1110
19
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
19
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
1109
25
    DataTypePtr get_return_type() const override {
1110
25
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
25
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1109
308
    DataTypePtr get_return_type() const override {
1110
308
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
308
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1109
34
    DataTypePtr get_return_type() const override {
1110
34
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
34
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
1109
19
    DataTypePtr get_return_type() const override {
1110
19
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
19
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Line
Count
Source
1109
11
    DataTypePtr get_return_type() const override {
1110
11
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
11
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
Line
Count
Source
1109
254
    DataTypePtr get_return_type() const override {
1110
254
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
254
    }
1112
1113
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
1114
949
             Arena&) const override {
1115
949
        const auto& sources =
1116
949
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
949
        const auto& quantile_array =
1118
949
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
949
        const auto& offset_column_data = quantile_array.get_offsets();
1120
949
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
949
                                        quantile_array.get_data())
1122
949
                                        .get_null_map_data();
1123
949
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
949
                                            quantile_array.get_data())
1125
949
                                            .get_nested_column();
1126
949
        const auto& nested_column_data =
1127
949
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
949
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
949
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
949
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
949
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
949
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
15
             Arena&) const override {
1115
15
        const auto& sources =
1116
15
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
15
        const auto& quantile_array =
1118
15
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
15
        const auto& offset_column_data = quantile_array.get_offsets();
1120
15
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
15
                                        quantile_array.get_data())
1122
15
                                        .get_null_map_data();
1123
15
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
15
                                            quantile_array.get_data())
1125
15
                                            .get_nested_column();
1126
15
        const auto& nested_column_data =
1127
15
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
15
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
15
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
15
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
15
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
30
             Arena&) const override {
1115
30
        const auto& sources =
1116
30
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
30
        const auto& quantile_array =
1118
30
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
30
        const auto& offset_column_data = quantile_array.get_offsets();
1120
30
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
30
                                        quantile_array.get_data())
1122
30
                                        .get_null_map_data();
1123
30
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
30
                                            quantile_array.get_data())
1125
30
                                            .get_nested_column();
1126
30
        const auto& nested_column_data =
1127
30
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
30
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
30
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
30
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
30
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
30
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
537
             Arena&) const override {
1115
537
        const auto& sources =
1116
537
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
537
        const auto& quantile_array =
1118
537
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
537
        const auto& offset_column_data = quantile_array.get_offsets();
1120
537
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
537
                                        quantile_array.get_data())
1122
537
                                        .get_null_map_data();
1123
537
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
537
                                            quantile_array.get_data())
1125
537
                                            .get_nested_column();
1126
537
        const auto& nested_column_data =
1127
537
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
537
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
537
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
537
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
537
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
537
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
33
             Arena&) const override {
1115
33
        const auto& sources =
1116
33
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
33
        const auto& quantile_array =
1118
33
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
33
        const auto& offset_column_data = quantile_array.get_offsets();
1120
33
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
33
                                        quantile_array.get_data())
1122
33
                                        .get_null_map_data();
1123
33
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
33
                                            quantile_array.get_data())
1125
33
                                            .get_nested_column();
1126
33
        const auto& nested_column_data =
1127
33
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
33
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
33
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
33
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
33
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
33
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
15
             Arena&) const override {
1115
15
        const auto& sources =
1116
15
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
15
        const auto& quantile_array =
1118
15
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
15
        const auto& offset_column_data = quantile_array.get_offsets();
1120
15
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
15
                                        quantile_array.get_data())
1122
15
                                        .get_null_map_data();
1123
15
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
15
                                            quantile_array.get_data())
1125
15
                                            .get_nested_column();
1126
15
        const auto& nested_column_data =
1127
15
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
15
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
15
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
15
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
15
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
3
             Arena&) const override {
1115
3
        const auto& sources =
1116
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
3
        const auto& quantile_array =
1118
3
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
3
        const auto& offset_column_data = quantile_array.get_offsets();
1120
3
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
3
                                        quantile_array.get_data())
1122
3
                                        .get_null_map_data();
1123
3
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
3
                                            quantile_array.get_data())
1125
3
                                            .get_nested_column();
1126
3
        const auto& nested_column_data =
1127
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
3
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
3
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
3
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
3
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
316
             Arena&) const override {
1115
316
        const auto& sources =
1116
316
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
316
        const auto& quantile_array =
1118
316
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
316
        const auto& offset_column_data = quantile_array.get_offsets();
1120
316
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
316
                                        quantile_array.get_data())
1122
316
                                        .get_null_map_data();
1123
316
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
316
                                            quantile_array.get_data())
1125
316
                                            .get_nested_column();
1126
316
        const auto& nested_column_data =
1127
316
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
316
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
316
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
316
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
316
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
316
    }
1133
1134
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
1135
1
                                Arena&) const override {
1136
1
        const auto& sources =
1137
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1138
1
        const auto& quantile_array =
1139
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1140
1
        const auto& offset_column_data = quantile_array.get_offsets();
1141
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1142
1
                                        quantile_array.get_data())
1143
1
                                        .get_null_map_data();
1144
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1145
1
                                            quantile_array.get_data())
1146
1
                                            .get_nested_column();
1147
1
        const auto& nested_column_data =
1148
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1149
1
        DCHECK_EQ(sources.get_data().size(), batch_size);
1150
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1151
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
1152
1
                cast_set<int64_t>(offset_column_data[0]));
1153
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
1135
1
                                Arena&) const override {
1136
1
        const auto& sources =
1137
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1138
1
        const auto& quantile_array =
1139
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1140
1
        const auto& offset_column_data = quantile_array.get_offsets();
1141
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1142
1
                                        quantile_array.get_data())
1143
1
                                        .get_null_map_data();
1144
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1145
1
                                            quantile_array.get_data())
1146
1
                                            .get_nested_column();
1147
1
        const auto& nested_column_data =
1148
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1149
        DCHECK_EQ(sources.get_data().size(), batch_size);
1150
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1151
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
1152
1
                cast_set<int64_t>(offset_column_data[0]));
1153
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
1154
1155
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
1156
0
                         const IColumn** columns, Arena&, bool has_null) override {
1157
0
        const auto& sources =
1158
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1159
0
        const auto& quantile_array =
1160
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1161
0
        const auto& offset_column_data = quantile_array.get_offsets();
1162
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1163
0
                                        quantile_array.get_data())
1164
0
                                        .get_null_map_data();
1165
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1166
0
                                            quantile_array.get_data())
1167
0
                                            .get_nested_column();
1168
0
        const auto& nested_column_data =
1169
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1170
0
        DCHECK(!has_null);
1171
0
        size_t start = batch_begin == 0 ? 0 : offset_column_data[batch_begin - 1];
1172
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1173
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
1174
0
                nested_column_data.get_data(), null_maps, start,
1175
0
                cast_set<int64_t>(offset_column_data[batch_begin] - start));
1176
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
1177
1178
191
    void check_input_columns_type(const IColumn** columns) const override {
1179
191
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
191
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
191
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
4
    void check_input_columns_type(const IColumn** columns) const override {
1179
4
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
4
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
4
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
9
    void check_input_columns_type(const IColumn** columns) const override {
1179
9
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
9
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
9
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
140
    void check_input_columns_type(const IColumn** columns) const override {
1179
140
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
140
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
140
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
8
    void check_input_columns_type(const IColumn** columns) const override {
1179
8
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
8
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
8
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
4
    void check_input_columns_type(const IColumn** columns) const override {
1179
4
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
4
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
4
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
2
    void check_input_columns_type(const IColumn** columns) const override {
1179
2
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
2
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
24
    void check_input_columns_type(const IColumn** columns) const override {
1179
24
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
24
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
24
    }
1182
1183
10
    void reset(AggregateDataPtr __restrict place) const override {
1184
10
        AggregateFunctionPercentileArrayV2::data(place).reset();
1185
10
    }
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
1183
10
    void reset(AggregateDataPtr __restrict place) const override {
1184
10
        AggregateFunctionPercentileArrayV2::data(place).reset();
1185
10
    }
1186
1187
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
1188
410
               Arena&) const override {
1189
410
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
410
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
410
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
2
               Arena&) const override {
1189
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
2
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
7
               Arena&) const override {
1189
7
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
7
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
227
               Arena&) const override {
1189
227
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
227
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
227
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
3
               Arena&) const override {
1189
3
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
3
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
2
               Arena&) const override {
1189
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
2
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
2
               Arena&) const override {
1189
2
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
2
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1188
167
               Arena&) const override {
1189
167
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
167
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
167
    }
1192
1193
340
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
340
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
340
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
7
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
7
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
225
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
225
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
225
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
3
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
3
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
2
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1193
99
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
99
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
99
    }
1196
1197
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
1198
348
                     Arena&) const override {
1199
348
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
348
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
2
                     Arena&) const override {
1199
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
7
                     Arena&) const override {
1199
7
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
7
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
225
                     Arena&) const override {
1199
225
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
225
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
3
                     Arena&) const override {
1199
3
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
2
                     Arena&) const override {
1199
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
2
                     Arena&) const override {
1199
2
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1198
107
                     Arena&) const override {
1199
107
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
107
    }
1201
1202
432
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
432
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
432
        auto& to_nested_col = to_arr.get_data();
1205
432
        if (is_column_nullable(to_nested_col)) {
1206
432
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
432
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
432
                    col_null->get_nested_column());
1209
432
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
432
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
432
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
432
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
12
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
12
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
12
        auto& to_nested_col = to_arr.get_data();
1205
12
        if (is_column_nullable(to_nested_col)) {
1206
12
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
12
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
12
                    col_null->get_nested_column());
1209
12
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
12
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
12
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
13
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
13
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
13
        auto& to_nested_col = to_arr.get_data();
1205
13
        if (is_column_nullable(to_nested_col)) {
1206
13
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
13
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
13
                    col_null->get_nested_column());
1209
13
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
13
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
13
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
184
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
184
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
184
        auto& to_nested_col = to_arr.get_data();
1205
184
        if (is_column_nullable(to_nested_col)) {
1206
184
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
184
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
184
                    col_null->get_nested_column());
1209
184
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
184
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
184
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
184
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
13
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
13
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
13
        auto& to_nested_col = to_arr.get_data();
1205
13
        if (is_column_nullable(to_nested_col)) {
1206
13
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
13
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
13
                    col_null->get_nested_column());
1209
13
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
13
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
13
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
12
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
12
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
12
        auto& to_nested_col = to_arr.get_data();
1205
12
        if (is_column_nullable(to_nested_col)) {
1206
12
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
12
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
12
                    col_null->get_nested_column());
1209
12
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
12
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
12
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
2
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
2
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
2
        auto& to_nested_col = to_arr.get_data();
1205
2
        if (is_column_nullable(to_nested_col)) {
1206
2
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
2
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
2
                    col_null->get_nested_column());
1209
2
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
2
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
2
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
196
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
196
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
196
        auto& to_nested_col = to_arr.get_data();
1205
196
        if (is_column_nullable(to_nested_col)) {
1206
196
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
196
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
196
                    col_null->get_nested_column());
1209
196
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
196
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
196
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
196
    }
1215
};
1216
1217
} // namespace doris