Coverage Report

Created: 2026-09-24 08:14

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
90
                                               const IColumn& column, size_t index) {
54
90
    const auto* array_column = check_and_get_column<ColumnArray>(column);
55
90
    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
90
    const auto* nullable_column = check_and_get_column<ColumnNullable>(array_column->get_data());
63
90
    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
90
    if (UNLIKELY(check_and_get_column<ColumnFloat64>(nullable_column->get_nested_column()) ==
71
90
                 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
90
}
78
79
struct PercentileApproxState {
80
    static constexpr double INIT_QUANTILE = -1.0;
81
1.17k
    PercentileApproxState() = default;
82
1.16k
    ~PercentileApproxState() = default;
83
84
1.14k
    void init(double quantile, float compression = 10000) {
85
1.14k
        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
729
            if (!std::isfinite(compression) || compression < 2048 || compression > 10000) {
91
0
                compression = 10000;
92
0
            }
93
729
            digest = TDigest::create_unique(compression);
94
729
            check_quantile(quantile);
95
729
            target_quantile = quantile;
96
729
            compressions = compression;
97
729
            init_flag = true;
98
729
        }
99
1.14k
    }
100
101
175
    void write(BufferWritable& buf) const {
102
175
        buf.write_binary(init_flag);
103
175
        if (!init_flag) {
104
44
            return;
105
44
        }
106
107
131
        buf.write_binary(target_quantile);
108
131
        buf.write_binary(compressions);
109
131
        uint32_t serialize_size = digest->serialized_size();
110
131
        std::string result(serialize_size, '0');
111
131
        DCHECK(digest.get() != nullptr);
112
131
        digest->serialize((uint8_t*)result.c_str());
113
114
131
        buf.write_binary(result);
115
131
    }
116
117
191
    void read(BufferReadable& buf) {
118
191
        buf.read_binary(init_flag);
119
191
        if (!init_flag) {
120
44
            return;
121
44
        }
122
123
147
        buf.read_binary(target_quantile);
124
147
        buf.read_binary(compressions);
125
147
        std::string str;
126
147
        buf.read_binary(str);
127
147
        digest = TDigest::create_unique(compressions);
128
147
        digest->unserialize((uint8_t*)str.c_str());
129
147
    }
130
131
692
    double get() const {
132
692
        if (init_flag) {
133
646
            return digest->quantile(static_cast<float>(target_quantile));
134
646
        } else {
135
46
            return std::nan("");
136
46
        }
137
692
    }
138
139
347
    void merge(const PercentileApproxState& rhs) {
140
347
        if (!rhs.init_flag || rhs.digest->total_size() == 0) {
141
166
            return;
142
166
        }
143
181
        if (!init_flag || digest->total_size() == 0) {
144
109
            target_quantile = rhs.target_quantile;
145
109
            compressions = rhs.compressions;
146
109
            digest = TDigest::create_unique(compressions);
147
109
            init_flag = true;
148
109
        } else if (UNLIKELY(target_quantile != rhs.target_quantile ||
149
72
                            compressions != rhs.compressions)) {
150
32
            throw Exception(
151
32
                    ErrorCode::INVALID_ARGUMENT,
152
32
                    "percentile_approx aggregate states have incompatible quantile or compression");
153
32
        }
154
149
        digest->merge(rhs.digest.get());
155
149
    }
156
157
841
    void add(double source) { digest->add(static_cast<float>(source)); }
158
159
295
    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
295
        if (weight <= 0) {
162
47
            return;
163
47
        }
164
248
        digest->add(static_cast<float>(source), static_cast<float>(weight));
165
248
    }
166
167
136
    void reset() {
168
136
        target_quantile = INIT_QUANTILE;
169
136
        init_flag = false;
170
136
        digest = TDigest::create_unique(compressions);
171
136
    }
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
245
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
185
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
20
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
27
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
13
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
185
186
95
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
33
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
53
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
9
    String get_name() const override { return "percentile_approx"; }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE8get_nameB5cxx11Ev
187
188
136
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5resetEPc
Line
Count
Source
188
23
    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
347
               Arena&) const override {
192
347
        this->data(place).merge(this->data(rhs));
193
347
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
207
               Arena&) const override {
192
207
        this->data(place).merge(this->data(rhs));
193
207
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
45
               Arena&) const override {
192
45
        this->data(place).merge(this->data(rhs));
193
45
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
65
               Arena&) const override {
192
65
        this->data(place).merge(this->data(rhs));
193
65
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
30
               Arena&) const override {
192
30
        this->data(place).merge(this->data(rhs));
193
30
    }
194
195
175
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
175
        this->data(place).write(buf);
197
175
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
110
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
110
        this->data(place).write(buf);
197
110
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
20
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
20
        this->data(place).write(buf);
197
20
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
31
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
31
        this->data(place).write(buf);
197
31
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
14
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
14
        this->data(place).write(buf);
197
14
    }
198
199
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
200
191
                     Arena&) const override {
201
191
        this->data(place).read(buf);
202
191
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
114
                     Arena&) const override {
201
114
        this->data(place).read(buf);
202
114
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
24
                     Arena&) const override {
201
24
        this->data(place).read(buf);
202
24
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
35
                     Arena&) const override {
201
35
        this->data(place).read(buf);
202
35
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
18
                     Arena&) const override {
201
18
        this->data(place).read(buf);
202
18
    }
203
204
271
    void check_input_columns_type(const IColumn** columns) const override {
205
1.05k
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
783
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
783
        }
208
271
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
42
    void check_input_columns_type(const IColumn** columns) const override {
205
126
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
84
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
84
        }
208
42
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
207
    void check_input_columns_type(const IColumn** columns) const override {
205
830
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
623
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
623
        }
208
207
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
12
    void check_input_columns_type(const IColumn** columns) const override {
205
48
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
36
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
36
        }
208
12
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
10
    void check_input_columns_type(const IColumn** columns) const override {
205
50
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
40
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
40
        }
208
10
    }
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
185
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
218
185
                      argument_types_) {}
219
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
220
446
             Arena&) const override {
221
446
        const auto& sources =
222
446
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
223
446
        const auto& quantile =
224
446
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
225
446
        this->data(place).init(quantile.get_element(0));
226
446
        this->data(place).add(sources.get_element(row_num));
227
446
    }
228
229
472
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
230
231
305
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
232
305
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
233
305
        col.get_data().push_back(this->data(place).get());
234
305
    }
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
20
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxThreeParams>(
245
20
                      argument_types_) {}
246
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
247
407
             Arena&) const override {
248
407
        const auto& sources =
249
407
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
250
407
        const auto& quantile =
251
407
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
252
407
        const auto& compression =
253
407
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
254
255
407
        this->data(place).init(quantile.get_element(0),
256
407
                               static_cast<float>(compression.get_element(0)));
257
407
        this->data(place).add(sources.get_element(row_num));
258
407
    }
259
260
540
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
261
262
238
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
263
238
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
264
238
        col.get_data().push_back(this->data(place).get());
265
238
    }
266
};
267
268
class AggregateFunctionPercentileApproxWeightedThreeParams final
269
        : public AggregateFunctionPercentileApproxBase<
270
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
271
          MultiExpression,
272
          NullableAggregateFunction {
273
public:
274
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
275
27
            : AggregateFunctionPercentileApproxBase<
276
27
                      AggregateFunctionPercentileApproxWeightedThreeParams>(argument_types_) {}
277
278
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
279
175
             Arena&) const override {
280
175
        const auto& sources =
281
175
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
282
175
        const auto& weight =
283
175
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
284
175
        const auto& quantile =
285
175
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
286
287
175
        this->data(place).init(quantile.get_element(0));
288
175
        this->data(place).add_with_weight(sources.get_element(row_num),
289
175
                                          weight.get_element(row_num));
290
175
    }
291
292
202
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
293
294
111
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
295
111
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
296
111
        col.get_data().push_back(this->data(place).get());
297
111
    }
298
};
299
300
class AggregateFunctionPercentileApproxWeightedFourParams final
301
        : public AggregateFunctionPercentileApproxBase<
302
                  AggregateFunctionPercentileApproxWeightedFourParams>,
303
          MultiExpression,
304
          NullableAggregateFunction {
305
public:
306
    AggregateFunctionPercentileApproxWeightedFourParams(const DataTypes& argument_types_)
307
13
            : AggregateFunctionPercentileApproxBase<
308
13
                      AggregateFunctionPercentileApproxWeightedFourParams>(argument_types_) {}
309
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
310
120
             Arena&) const override {
311
120
        const auto& sources =
312
120
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
313
120
        const auto& weight =
314
120
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
315
120
        const auto& quantile =
316
120
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
317
120
        const auto& compression =
318
120
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[3]);
319
320
120
        this->data(place).init(quantile.get_element(0),
321
120
                               static_cast<float>(compression.get_element(0)));
322
120
        this->data(place).add_with_weight(sources.get_element(row_num),
323
120
                                          weight.get_element(row_num));
324
120
    }
325
326
87
    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
1.94k
    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
609
              size_t size, float compression = 10000) {
339
609
        if (init_flag) {
340
0
            return;
341
0
        }
342
343
609
        if (!std::isfinite(compression) || compression < 2048 || compression > 10000) {
344
7
            compression = 10000;
345
7
        }
346
609
        compressions = compression;
347
609
        levels.quantiles.resize(size);
348
609
        levels.permutation.resize(size);
349
1.68k
        for (size_t i = 0; i < size; ++i) {
350
1.07k
            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.07k
            check_quantile(quantiles[start + i]);
355
1.07k
            levels.quantiles[i] = quantiles[start + i];
356
1.07k
            levels.permutation[i] = i;
357
1.07k
        }
358
608
        if (!levels.empty()) {
359
554
            digest = TDigest::create_unique(compressions);
360
554
        }
361
608
        init_flag = true;
362
608
    }
363
364
706
    void add_range(const Float64* values, size_t size) {
365
706
        if (levels.empty()) {
366
57
            return;
367
57
        }
368
1.33k
        for (size_t i = 0; i < size; ++i) {
369
687
            digest->add(static_cast<float>(values[i]));
370
687
        }
371
649
    }
372
373
606
    void write(BufferWritable& buf) const {
374
        // Sample-free states share the fresh-state encoding, independent of their parameters.
375
606
        const bool has_data = has_samples();
376
606
        buf.write_binary(has_data);
377
606
        if (!has_data) {
378
459
            return;
379
459
        }
380
381
147
        levels.write(buf);
382
147
        buf.write_binary(compressions);
383
147
        uint32_t serialize_size = digest->serialized_size();
384
147
        std::string result(serialize_size, '0');
385
147
        digest->serialize(reinterpret_cast<uint8_t*>(result.data()));
386
147
        buf.write_binary(result);
387
147
    }
388
389
258
    void read(BufferReadable& buf) {
390
258
        reset();
391
258
        buf.read_binary(init_flag);
392
258
        if (!init_flag) {
393
99
            return;
394
99
        }
395
396
159
        levels.read(buf);
397
159
        buf.read_binary(compressions);
398
159
        if (levels.empty()) {
399
0
            return;
400
0
        }
401
159
        std::string str;
402
159
        buf.read_binary(str);
403
159
        digest = TDigest::create_unique(compressions);
404
159
        digest->unserialize(reinterpret_cast<const uint8_t*>(str.data()));
405
159
    }
406
407
432
    void merge(const PercentileApproxArrayState& rhs) {
408
432
        if (!rhs.has_samples()) {
409
156
            return;
410
156
        }
411
412
276
        if (!has_samples()) {
413
211
            levels = rhs.levels;
414
211
            compressions = rhs.compressions;
415
211
            digest = TDigest::create_unique(compressions);
416
211
            init_flag = true;
417
211
        } else if (UNLIKELY(compressions != rhs.compressions ||
418
65
                            levels.quantiles != rhs.levels.quantiles)) {
419
26
            throw Exception(ErrorCode::INVALID_ARGUMENT,
420
26
                            "percentile_approx_array aggregate states have incompatible quantiles "
421
26
                            "or compression");
422
26
        }
423
250
        digest->merge(rhs.digest.get());
424
250
    }
425
426
304
    void reset() {
427
304
        init_flag = false;
428
304
        levels.clear();
429
304
        digest.reset();
430
304
        compressions = 10000;
431
304
    }
432
433
626
    void insert_result_into(IColumn& to) const {
434
626
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
435
626
        if (!has_samples()) {
436
246
            return;
437
246
        }
438
439
380
        const size_t old_size = column_data.size();
440
380
        const size_t size = levels.quantiles.size();
441
380
        column_data.resize(old_size + size);
442
380
        digest->quantiles(levels.quantiles.data(), levels.get_permutation().data(), size,
443
380
                          column_data.data() + old_size);
444
380
    }
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
63
            : Base(argument_types_) {}
_ZN5doris38AggregateFunctionPercentileApproxArrayILb0EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
465
25
            : Base(argument_types_) {}
_ZN5doris38AggregateFunctionPercentileApproxArrayILb1EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
465
38
            : 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
720
    DataTypePtr get_return_type() const override {
470
720
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
720
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE15get_return_typeEv
Line
Count
Source
469
425
    DataTypePtr get_return_type() const override {
470
425
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
425
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE15get_return_typeEv
Line
Count
Source
469
295
    DataTypePtr get_return_type() const override {
470
295
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
471
295
    }
472
473
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
474
693
             Arena&) const override {
475
693
        const auto& sources =
476
693
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
693
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
693
                    cast_set<size_t>(row_num));
479
693
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
474
420
             Arena&) const override {
475
420
        const auto& sources =
476
420
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
420
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
420
                    cast_set<size_t>(row_num));
479
420
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
474
273
             Arena&) const override {
475
273
        const auto& sources =
476
273
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
477
273
        _add_values(this->data(place), &sources.get_data()[row_num], 1, columns,
478
273
                    cast_set<size_t>(row_num));
479
273
    }
480
481
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
482
16
                                Arena&) const override {
483
16
        const auto& sources =
484
16
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
485
16
        DCHECK_EQ(sources.get_data().size(), batch_size);
486
16
        _add_values(this->data(place), sources.get_data().data(), batch_size, columns, 0);
487
16
    }
_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
9
                                Arena&) const override {
483
9
        const auto& sources =
484
9
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
485
        DCHECK_EQ(sources.get_data().size(), batch_size);
486
9
        _add_values(this->data(place), sources.get_data().data(), batch_size, columns, 0);
487
9
    }
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
18
    void check_input_columns_type(const IColumn** columns) const override {
499
18
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
18
        check_percentile_array_column_type(*this, *columns[1], 1);
501
18
        if constexpr (has_compression) {
502
8
            this->template check_argument_column_type<ColumnFloat64>(columns[2]);
503
8
        }
504
18
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
498
10
    void check_input_columns_type(const IColumn** columns) const override {
499
10
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
10
        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
10
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
498
8
    void check_input_columns_type(const IColumn** columns) const override {
499
8
        this->template check_argument_column_type<ColumnFloat64>(columns[0]);
500
8
        check_percentile_array_column_type(*this, *columns[1], 1);
501
8
        if constexpr (has_compression) {
502
8
            this->template check_argument_column_type<ColumnFloat64>(columns[2]);
503
8
        }
504
8
    }
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
432
               Arena&) const override {
510
432
        this->data(place).merge(this->data(rhs));
511
432
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
509
239
               Arena&) const override {
510
239
        this->data(place).merge(this->data(rhs));
511
239
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
509
193
               Arena&) const override {
510
193
        this->data(place).merge(this->data(rhs));
511
193
    }
512
513
606
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
606
        this->data(place).write(buf);
515
606
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
513
306
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
306
        this->data(place).write(buf);
515
306
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
513
300
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
514
300
        this->data(place).write(buf);
515
300
    }
516
517
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
518
258
                     Arena&) const override {
519
258
        this->data(place).read(buf);
520
258
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
518
134
                     Arena&) const override {
519
134
        this->data(place).read(buf);
520
134
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
518
124
                     Arena&) const override {
519
124
        this->data(place).read(buf);
520
124
    }
521
522
626
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
626
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
626
        auto& nullable_data =
525
626
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
626
        auto& nested_data = nullable_data.get_nested_column();
527
626
        this->data(place).insert_result_into(nested_data);
528
626
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
626
        to_arr.get_offsets().push_back(nested_data.size());
530
626
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
522
366
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
366
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
366
        auto& nullable_data =
525
366
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
366
        auto& nested_data = nullable_data.get_nested_column();
527
366
        this->data(place).insert_result_into(nested_data);
528
366
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
366
        to_arr.get_offsets().push_back(nested_data.size());
530
366
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
522
260
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
523
260
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
524
260
        auto& nullable_data =
525
260
                assert_cast<ColumnNullable&, TypeCheckOnRelease::DISABLE>(to_arr.get_data());
526
260
        auto& nested_data = nullable_data.get_nested_column();
527
260
        this->data(place).insert_result_into(nested_data);
528
260
        nullable_data.get_null_map_data().resize_fill(nested_data.size(), 0);
529
260
        to_arr.get_offsets().push_back(nested_data.size());
530
260
    }
531
532
private:
533
    void _add_values(PercentileApproxArrayState& state, const Float64* values, size_t value_size,
534
710
                     const IColumn** columns, size_t quantile_row) const {
535
710
        if (!state.init_flag) {
536
609
            const auto& quantile_array =
537
609
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
609
            const auto& offsets = quantile_array.get_offsets();
539
609
            const auto& nullable_quantiles =
540
609
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
609
                            quantile_array.get_data());
542
609
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
609
                                            nullable_quantiles.get_nested_column())
544
609
                                            .get_data();
545
609
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
609
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
609
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
609
            float compression = 10000;
550
609
            if constexpr (has_compression) {
551
246
                const auto& compression_column =
552
246
                        assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
553
246
                compression = static_cast<float>(compression_column.get_element(0));
554
246
            }
555
609
            state.init(quantiles, null_map, start, quantile_size, compression);
556
609
        }
557
710
        state.add_range(values, value_size);
558
710
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb0EE11_add_valuesERNS_26PercentileApproxArrayStateEPKdmPPKNS_7IColumnEm
Line
Count
Source
534
428
                     const IColumn** columns, size_t quantile_row) const {
535
428
        if (!state.init_flag) {
536
363
            const auto& quantile_array =
537
363
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
363
            const auto& offsets = quantile_array.get_offsets();
539
363
            const auto& nullable_quantiles =
540
363
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
363
                            quantile_array.get_data());
542
363
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
363
                                            nullable_quantiles.get_nested_column())
544
363
                                            .get_data();
545
363
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
363
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
363
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
363
            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
363
            state.init(quantiles, null_map, start, quantile_size, compression);
556
363
        }
557
428
        state.add_range(values, value_size);
558
428
    }
_ZNK5doris38AggregateFunctionPercentileApproxArrayILb1EE11_add_valuesERNS_26PercentileApproxArrayStateEPKdmPPKNS_7IColumnEm
Line
Count
Source
534
282
                     const IColumn** columns, size_t quantile_row) const {
535
282
        if (!state.init_flag) {
536
246
            const auto& quantile_array =
537
246
                    assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
538
246
            const auto& offsets = quantile_array.get_offsets();
539
246
            const auto& nullable_quantiles =
540
246
                    assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
541
246
                            quantile_array.get_data());
542
246
            const auto& quantiles = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
543
246
                                            nullable_quantiles.get_nested_column())
544
246
                                            .get_data();
545
246
            const auto& null_map = nullable_quantiles.get_null_map_data();
546
246
            const size_t start = quantile_row == 0 ? 0 : offsets[quantile_row - 1];
547
246
            const size_t quantile_size = offsets[quantile_row] - start;
548
549
246
            float compression = 10000;
550
246
            if constexpr (has_compression) {
551
246
                const auto& compression_column =
552
246
                        assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
553
246
                compression = static_cast<float>(compression_column.get_element(0));
554
246
            }
555
246
            state.init(quantiles, null_map, start, quantile_size, compression);
556
246
        }
557
282
        state.add_range(values, value_size);
558
282
    }
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
99
    void write(BufferWritable& buf) const {
568
99
        buf.write_binary(inited_flag);
569
99
        if (!inited_flag) {
570
14
            return;
571
14
        }
572
85
        int size_num = cast_set<int>(vec_quantile.size());
573
85
        buf.write_binary(size_num);
574
88
        for (const auto& quantile : vec_quantile) {
575
88
            buf.write_binary(quantile);
576
88
        }
577
88
        for (auto& counts : vec_counts) {
578
88
            counts.serialize(buf);
579
88
        }
580
85
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
567
51
    void write(BufferWritable& buf) const {
568
51
        buf.write_binary(inited_flag);
569
51
        if (!inited_flag) {
570
0
            return;
571
0
        }
572
51
        int size_num = cast_set<int>(vec_quantile.size());
573
51
        buf.write_binary(size_num);
574
51
        for (const auto& quantile : vec_quantile) {
575
51
            buf.write_binary(quantile);
576
51
        }
577
51
        for (auto& counts : vec_counts) {
578
51
            counts.serialize(buf);
579
51
        }
580
51
    }
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
150
    void read(BufferReadable& buf) {
583
150
        buf.read_binary(inited_flag);
584
150
        if (!inited_flag) {
585
14
            return;
586
14
        }
587
136
        int size_num = 0;
588
136
        buf.read_binary(size_num);
589
136
        double data = 0.0;
590
136
        vec_quantile.clear();
591
277
        for (int i = 0; i < size_num; ++i) {
592
141
            buf.read_binary(data);
593
141
            vec_quantile.emplace_back(data);
594
141
        }
595
136
        vec_counts.clear();
596
136
        vec_counts.resize(size_num);
597
277
        for (int i = 0; i < size_num; ++i) {
598
141
            vec_counts[i].unserialize(buf);
599
141
        }
600
136
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
582
90
    void read(BufferReadable& buf) {
583
90
        buf.read_binary(inited_flag);
584
90
        if (!inited_flag) {
585
0
            return;
586
0
        }
587
90
        int size_num = 0;
588
90
        buf.read_binary(size_num);
589
90
        double data = 0.0;
590
90
        vec_quantile.clear();
591
180
        for (int i = 0; i < size_num; ++i) {
592
90
            buf.read_binary(data);
593
90
            vec_quantile.emplace_back(data);
594
90
        }
595
90
        vec_counts.clear();
596
90
        vec_counts.resize(size_num);
597
180
        for (int i = 0; i < size_num; ++i) {
598
90
            vec_counts[i].unserialize(buf);
599
90
        }
600
90
    }
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
175
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
175
        if (!inited_flag) {
605
165
            vec_counts.resize(arg_size);
606
165
            vec_quantile.resize(arg_size, -1);
607
165
            inited_flag = true;
608
336
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
171
                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
171
                check_quantile(quantiles[i]);
615
171
                vec_quantile[i] = quantiles[i];
616
171
            }
617
165
        }
618
357
        for (int i = 0; i < arg_size; ++i) {
619
182
            vec_counts[i].increment(source);
620
182
        }
621
175
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE3addElRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
22
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
22
        if (!inited_flag) {
605
22
            vec_counts.resize(arg_size);
606
22
            vec_quantile.resize(arg_size, -1);
607
22
            inited_flag = true;
608
44
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
22
                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
22
                check_quantile(quantiles[i]);
615
22
                vec_quantile[i] = quantiles[i];
616
22
            }
617
22
        }
618
44
        for (int i = 0; i < arg_size; ++i) {
619
22
            vec_counts[i].increment(source);
620
22
        }
621
22
    }
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
195
    void merge(const PercentileState& rhs) {
636
195
        if (rhs.vec_counts.empty()) {
637
32
            return;
638
32
        }
639
163
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
163
        if (vec_counts.empty()) {
641
92
            vec_counts.resize(size_num);
642
92
            vec_quantile = rhs.vec_quantile;
643
92
            inited_flag = true;
644
92
        } 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
285
        for (int i = 0; i < size_num; ++i) {
650
146
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
146
        }
652
139
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
635
90
    void merge(const PercentileState& rhs) {
636
90
        if (rhs.vec_counts.empty()) {
637
0
            return;
638
0
        }
639
90
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
90
        if (vec_counts.empty()) {
641
53
            vec_counts.resize(size_num);
642
53
            vec_quantile = rhs.vec_quantile;
643
53
            inited_flag = true;
644
53
        } 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
180
        for (int i = 0; i < size_num; ++i) {
650
90
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
90
        }
652
90
    }
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
54
    void reset() {
655
54
        vec_counts.clear();
656
54
        vec_quantile.clear();
657
54
        inited_flag = false;
658
54
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
654
47
    void reset() {
655
47
        vec_counts.clear();
656
47
        vec_quantile.clear();
657
47
        inited_flag = false;
658
47
    }
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
52
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
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
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
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
_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
812
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
812
        if (!inited_flag) {
678
496
            _set_single_level(quantile);
679
496
            inited_flag = true;
680
496
        }
681
812
        _append(data, count);
682
812
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16add_single_rangeEPKamd
Line
Count
Source
676
30
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
30
        if (!inited_flag) {
678
5
            _set_single_level(quantile);
679
5
            inited_flag = true;
680
5
        }
681
30
        _append(data, count);
682
30
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16add_single_rangeEPKsmd
Line
Count
Source
676
311
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
311
        if (!inited_flag) {
678
100
            _set_single_level(quantile);
679
100
            inited_flag = true;
680
100
        }
681
311
        _append(data, count);
682
311
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16add_single_rangeEPKimd
Line
Count
Source
676
23
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
23
        if (!inited_flag) {
678
19
            _set_single_level(quantile);
679
19
            inited_flag = true;
680
19
        }
681
23
        _append(data, count);
682
23
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16add_single_rangeEPKlmd
Line
Count
Source
676
6
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
6
        if (!inited_flag) {
678
5
            _set_single_level(quantile);
679
5
            inited_flag = true;
680
5
        }
681
6
        _append(data, count);
682
6
    }
_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
381
                        size_t start, int64_t arg_size) {
687
381
        if (!inited_flag) {
688
285
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
285
            inited_flag = true;
690
285
        }
691
381
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
368
        _append(data, count);
695
368
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
14
                        size_t start, int64_t arg_size) {
687
14
        if (!inited_flag) {
688
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
12
            inited_flag = true;
690
12
        }
691
14
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
14
        _append(data, count);
695
14
    }
_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
18
                        size_t start, int64_t arg_size) {
687
18
        if (!inited_flag) {
688
15
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
15
            inited_flag = true;
690
15
        }
691
18
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
18
        _append(data, count);
695
18
    }
_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
268
                        size_t start, int64_t arg_size) {
687
268
        if (!inited_flag) {
688
212
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
212
            inited_flag = true;
690
212
        }
691
268
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
255
        _append(data, count);
695
255
    }
696
697
177
    void write(BufferWritable& buf) const {
698
177
        buf.write_binary(inited_flag);
699
177
        if (!inited_flag) {
700
43
            return;
701
43
        }
702
703
134
        levels.write(buf);
704
134
        size_t size = values.size();
705
134
        buf.write_binary(size);
706
134
        if (size > 0) {
707
94
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
94
        }
709
134
    }
_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
6
    void write(BufferWritable& buf) const {
698
6
        buf.write_binary(inited_flag);
699
6
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
6
        levels.write(buf);
704
6
        size_t size = values.size();
705
6
        buf.write_binary(size);
706
6
        if (size > 0) {
707
6
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
6
        }
709
6
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
697
7
    void write(BufferWritable& buf) const {
698
7
        buf.write_binary(inited_flag);
699
7
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
7
        levels.write(buf);
704
7
        size_t size = values.size();
705
7
        buf.write_binary(size);
706
7
        if (size > 0) {
707
7
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
7
        }
709
7
    }
_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
142
    void write(BufferWritable& buf) const {
698
142
        buf.write_binary(inited_flag);
699
142
        if (!inited_flag) {
700
42
            return;
701
42
        }
702
703
100
        levels.write(buf);
704
100
        size_t size = values.size();
705
100
        buf.write_binary(size);
706
100
        if (size > 0) {
707
60
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
60
        }
709
100
    }
710
711
189
    void read(BufferReadable& buf) {
712
189
        reset();
713
189
        buf.read_binary(inited_flag);
714
189
        if (!inited_flag) {
715
43
            return;
716
43
        }
717
718
146
        levels.read(buf);
719
146
        size_t size = 0;
720
146
        buf.read_binary(size);
721
146
        values.resize(size);
722
146
        if (size > 0) {
723
106
            auto raw = buf.read(sizeof(ValueType) * size);
724
106
            memcpy(values.data(), raw.data, raw.size);
725
106
        }
726
146
    }
_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
6
    void read(BufferReadable& buf) {
712
6
        reset();
713
6
        buf.read_binary(inited_flag);
714
6
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
6
        levels.read(buf);
719
6
        size_t size = 0;
720
6
        buf.read_binary(size);
721
6
        values.resize(size);
722
6
        if (size > 0) {
723
6
            auto raw = buf.read(sizeof(ValueType) * size);
724
6
            memcpy(values.data(), raw.data, raw.size);
725
6
        }
726
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
711
7
    void read(BufferReadable& buf) {
712
7
        reset();
713
7
        buf.read_binary(inited_flag);
714
7
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
7
        levels.read(buf);
719
7
        size_t size = 0;
720
7
        buf.read_binary(size);
721
7
        values.resize(size);
722
7
        if (size > 0) {
723
7
            auto raw = buf.read(sizeof(ValueType) * size);
724
7
            memcpy(values.data(), raw.data, raw.size);
725
7
        }
726
7
    }
_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
154
    void read(BufferReadable& buf) {
712
154
        reset();
713
154
        buf.read_binary(inited_flag);
714
154
        if (!inited_flag) {
715
42
            return;
716
42
        }
717
718
112
        levels.read(buf);
719
112
        size_t size = 0;
720
112
        buf.read_binary(size);
721
112
        values.resize(size);
722
112
        if (size > 0) {
723
72
            auto raw = buf.read(sizeof(ValueType) * size);
724
72
            memcpy(values.data(), raw.data, raw.size);
725
72
        }
726
112
    }
727
728
342
    void merge(const PercentileExactState& rhs) {
729
342
        if (!rhs.inited_flag) {
730
85
            return;
731
85
        }
732
733
257
        if (values.empty()) {
734
164
            levels = rhs.levels;
735
164
            inited_flag = true;
736
164
        } else if (rhs.values.empty()) {
737
18
            return;
738
75
        } 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
215
        _append(rhs.values.data(), rhs.values.size());
743
215
    }
_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
6
    void merge(const PercentileExactState& rhs) {
729
6
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
6
        if (values.empty()) {
734
4
            levels = rhs.levels;
735
4
            inited_flag = true;
736
4
        } 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
6
        _append(rhs.values.data(), rhs.values.size());
743
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
728
7
    void merge(const PercentileExactState& rhs) {
729
7
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
7
        if (values.empty()) {
734
5
            levels = rhs.levels;
735
5
            inited_flag = true;
736
5
        } 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
7
        _append(rhs.values.data(), rhs.values.size());
743
7
    }
_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
307
    void merge(const PercentileExactState& rhs) {
729
307
        if (!rhs.inited_flag) {
730
84
            return;
731
84
        }
732
733
223
        if (values.empty()) {
734
145
            levels = rhs.levels;
735
145
            inited_flag = true;
736
145
        } else if (rhs.values.empty()) {
737
18
            return;
738
60
        } 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
181
        _append(rhs.values.data(), rhs.values.size());
743
181
    }
744
745
312
    void reset() {
746
312
        values.clear();
747
312
        levels.clear();
748
312
        inited_flag = false;
749
312
    }
_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
6
    void reset() {
746
6
        values.clear();
747
6
        levels.clear();
748
6
        inited_flag = false;
749
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
745
7
    void reset() {
746
7
        values.clear();
747
7
        levels.clear();
748
7
        inited_flag = false;
749
7
    }
_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
175
    void reset() {
746
175
        values.clear();
747
175
        levels.clear();
748
175
        inited_flag = false;
749
175
    }
750
751
521
    double get() const {
752
521
        if (!inited_flag || levels.empty() || values.empty()) {
753
134
            return std::numeric_limits<double>::quiet_NaN();
754
134
        }
755
756
521
        DCHECK_EQ(levels.quantiles.size(), 1);
757
387
        return _get_result(levels.quantiles[0]);
758
521
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE3getEv
Line
Count
Source
751
29
    double get() const {
752
29
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
29
        DCHECK_EQ(levels.quantiles.size(), 1);
757
29
        return _get_result(levels.quantiles[0]);
758
29
    }
_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
16
    double get() const {
752
16
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
16
        DCHECK_EQ(levels.quantiles.size(), 1);
757
16
        return _get_result(levels.quantiles[0]);
758
16
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
751
5
    double get() const {
752
5
        if (!inited_flag || levels.empty() || values.empty()) {
753
1
            return std::numeric_limits<double>::quiet_NaN();
754
1
        }
755
756
5
        DCHECK_EQ(levels.quantiles.size(), 1);
757
4
        return _get_result(levels.quantiles[0]);
758
5
    }
_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
244
    void insert_result_into(IColumn& to) const {
761
244
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
244
        if (!inited_flag || levels.empty()) {
763
21
            return;
764
21
        }
765
766
223
        size_t old_size = column_data.size();
767
223
        size_t size = levels.quantiles.size();
768
223
        column_data.resize(old_size + size);
769
223
        auto* result = column_data.data() + old_size;
770
771
223
        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
182
        if (values.size() == 1) {
779
328
            for (size_t i = 0; i < size; ++i) {
780
213
                result[i] = static_cast<double>(values.front());
781
213
            }
782
115
            return;
783
115
        }
784
785
67
        size_t prev_index = 0;
786
67
        const auto& quantiles = levels.quantiles;
787
67
        const auto& permutation = levels.get_permutation();
788
209
        for (size_t i = 0; i < size; ++i) {
789
142
            auto level_index = permutation[i];
790
142
            auto level = quantiles[level_index];
791
142
            double u = static_cast<double>(values.size() - 1) * level;
792
142
            auto index = static_cast<size_t>(u);
793
794
142
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
142
            } else {
798
142
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
142
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
142
                result[level_index] =
801
142
                        static_cast<double>(values[index]) +
802
142
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
142
                                                            static_cast<double>(values[index]));
804
142
                prev_index = index;
805
142
            }
806
142
        }
807
67
    }
_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
17
    void insert_result_into(IColumn& to) const {
761
17
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
17
        if (!inited_flag || levels.empty()) {
763
3
            return;
764
3
        }
765
766
14
        size_t old_size = column_data.size();
767
14
        size_t size = levels.quantiles.size();
768
14
        column_data.resize(old_size + size);
769
14
        auto* result = column_data.data() + old_size;
770
771
14
        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
14
        if (values.size() == 1) {
779
44
            for (size_t i = 0; i < size; ++i) {
780
33
                result[i] = static_cast<double>(values.front());
781
33
            }
782
11
            return;
783
11
        }
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_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
175
    void insert_result_into(IColumn& to) const {
761
175
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
175
        if (!inited_flag || levels.empty()) {
763
13
            return;
764
13
        }
765
766
162
        size_t old_size = column_data.size();
767
162
        size_t size = levels.quantiles.size();
768
162
        column_data.resize(old_size + size);
769
162
        auto* result = column_data.data() + old_size;
770
771
162
        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
121
        if (values.size() == 1) {
779
156
            for (size_t i = 0; i < size; ++i) {
780
84
                result[i] = static_cast<double>(values.front());
781
84
            }
782
72
            return;
783
72
        }
784
785
49
        size_t prev_index = 0;
786
49
        const auto& quantiles = levels.quantiles;
787
49
        const auto& permutation = levels.get_permutation();
788
143
        for (size_t i = 0; i < size; ++i) {
789
94
            auto level_index = permutation[i];
790
94
            auto level = quantiles[level_index];
791
94
            double u = static_cast<double>(values.size() - 1) * level;
792
94
            auto index = static_cast<size_t>(u);
793
794
94
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
94
            } else {
798
94
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
94
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
94
                result[level_index] =
801
94
                        static_cast<double>(values[index]) +
802
94
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
94
                                                            static_cast<double>(values[index]));
804
94
                prev_index = index;
805
94
            }
806
94
        }
807
49
    }
808
809
private:
810
496
    void _set_single_level(double quantile) {
811
496
        DCHECK(levels.empty());
812
496
        check_quantile(quantile);
813
496
        levels.quantiles.push_back(quantile);
814
496
        levels.permutation.push_back(0);
815
496
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE17_set_single_levelEd
Line
Count
Source
810
5
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
5
        check_quantile(quantile);
813
5
        levels.quantiles.push_back(quantile);
814
5
        levels.permutation.push_back(0);
815
5
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE17_set_single_levelEd
Line
Count
Source
810
100
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
100
        check_quantile(quantile);
813
100
        levels.quantiles.push_back(quantile);
814
100
        levels.permutation.push_back(0);
815
100
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE17_set_single_levelEd
Line
Count
Source
810
19
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
19
        check_quantile(quantile);
813
19
        levels.quantiles.push_back(quantile);
814
19
        levels.permutation.push_back(0);
815
19
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE17_set_single_levelEd
Line
Count
Source
810
5
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
5
        check_quantile(quantile);
813
5
        levels.quantiles.push_back(quantile);
814
5
        levels.permutation.push_back(0);
815
5
    }
_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
285
                          size_t start, int64_t arg_size) {
819
285
        DCHECK(levels.empty());
820
285
        size_t size = cast_set<size_t>(arg_size);
821
285
        levels.quantiles.resize(size);
822
285
        levels.permutation.resize(size);
823
724
        for (size_t i = 0; i < size; ++i) {
824
440
            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
439
            check_quantile(quantiles_data[start + i]);
829
439
            levels.quantiles[i] = quantiles_data[start + i];
830
439
            levels.permutation[i] = i;
831
439
        }
832
285
    }
_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
45
        for (size_t i = 0; i < size; ++i) {
824
33
            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
33
            check_quantile(quantiles_data[start + i]);
829
33
            levels.quantiles[i] = quantiles_data[start + i];
830
33
            levels.permutation[i] = i;
831
33
        }
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
15
                          size_t start, int64_t arg_size) {
819
15
        DCHECK(levels.empty());
820
15
        size_t size = cast_set<size_t>(arg_size);
821
15
        levels.quantiles.resize(size);
822
15
        levels.permutation.resize(size);
823
58
        for (size_t i = 0; i < size; ++i) {
824
43
            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
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
15
    }
_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
212
                          size_t start, int64_t arg_size) {
819
212
        DCHECK(levels.empty());
820
212
        size_t size = cast_set<size_t>(arg_size);
821
212
        levels.quantiles.resize(size);
822
212
        levels.permutation.resize(size);
823
448
        for (size_t i = 0; i < size; ++i) {
824
236
            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
236
            check_quantile(quantiles_data[start + i]);
829
236
            levels.quantiles[i] = quantiles_data[start + i];
830
236
            levels.permutation[i] = i;
831
236
        }
832
212
    }
833
834
1.38k
    void _append(const ValueType* data, size_t count) {
835
1.38k
        if (count == 0) {
836
72
            return;
837
72
        }
838
1.31k
        values.reserve(values.size() + count);
839
1.31k
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.62k
            for (size_t i = 0; i < count; ++i) {
841
824
                if (!std::isnan(data[i])) {
842
537
                    values.push_back(data[i]);
843
537
                }
844
824
            }
845
803
        } else {
846
508
            values.insert_assume_reserved(data, data + count);
847
508
        }
848
1.31k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE7_appendEPKam
Line
Count
Source
834
49
    void _append(const ValueType* data, size_t count) {
835
49
        if (count == 0) {
836
0
            return;
837
0
        }
838
49
        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
49
        } else {
846
49
            values.insert_assume_reserved(data, data + count);
847
49
        }
848
49
    }
_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
45
    void _append(const ValueType* data, size_t count) {
835
45
        if (count == 0) {
836
0
            return;
837
0
        }
838
45
        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
45
        } else {
846
45
            values.insert_assume_reserved(data, data + count);
847
45
        }
848
45
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE7_appendEPKlm
Line
Count
Source
834
43
    void _append(const ValueType* data, size_t count) {
835
43
        if (count == 0) {
836
0
            return;
837
0
        }
838
43
        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
43
        } else {
846
43
            values.insert_assume_reserved(data, data + count);
847
43
        }
848
43
    }
_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
861
    void _append(const ValueType* data, size_t count) {
835
861
        if (count == 0) {
836
72
            return;
837
72
        }
838
789
        values.reserve(values.size() + count);
839
789
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.59k
            for (size_t i = 0; i < count; ++i) {
841
807
                if (!std::isnan(data[i])) {
842
521
                    values.push_back(data[i]);
843
521
                }
844
807
            }
845
        } else {
846
            values.insert_assume_reserved(data, data + count);
847
        }
848
789
    }
849
850
387
    double _get_result(double quantile) const {
851
387
        if (values.size() == 1) {
852
157
            return static_cast<double>(values.front());
853
157
        }
854
855
230
        double u = static_cast<double>(values.size() - 1) * quantile;
856
230
        auto index = static_cast<size_t>(u);
857
858
230
        if (index + 1 >= values.size()) {
859
12
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
12
        }
861
862
218
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
218
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
218
        return static_cast<double>(values[index]) +
866
218
               (u - static_cast<double>(index)) *
867
218
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
230
    }
_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
16
    double _get_result(double quantile) const {
851
16
        if (values.size() == 1) {
852
12
            return static_cast<double>(values.front());
853
12
        }
854
855
4
        double u = static_cast<double>(values.size() - 1) * quantile;
856
4
        auto index = static_cast<size_t>(u);
857
858
4
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
4
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
4
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
4
        return static_cast<double>(values[index]) +
866
4
               (u - static_cast<double>(index)) *
867
4
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE11_get_resultEd
Line
Count
Source
850
4
    double _get_result(double quantile) const {
851
4
        if (values.size() == 1) {
852
3
            return static_cast<double>(values.front());
853
3
        }
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_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
357
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
356
    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
87
    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
87
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
886
887
74
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE15get_return_typeEv
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
887
46
    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
62
             Arena&) const override {
891
62
        const auto& sources =
892
62
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
62
        const auto& quantile =
894
62
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
62
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
62
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
62
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
22
             Arena&) const override {
891
22
        const auto& sources =
892
22
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
22
        const auto& quantile =
894
22
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
22
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
22
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
22
    }
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
14
    void check_input_columns_type(const IColumn** columns) const override {
911
14
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
14
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
14
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
14
    void check_input_columns_type(const IColumn** columns) const override {
911
14
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
14
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
14
    }
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
49
    void reset(AggregateDataPtr __restrict place) const override {
916
49
        AggregateFunctionPercentile::data(place).reset();
917
49
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5resetEPc
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5resetEPc
Line
Count
Source
915
47
    void reset(AggregateDataPtr __restrict place) const override {
916
47
        AggregateFunctionPercentile::data(place).reset();
917
47
    }
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
120
               Arena&) const override {
921
120
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
120
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
90
               Arena&) const override {
921
90
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
90
    }
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
65
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
65
        AggregateFunctionPercentile::data(place).write(buf);
926
65
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
51
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
51
        AggregateFunctionPercentile::data(place).write(buf);
926
51
    }
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
108
                     Arena&) const override {
930
108
        AggregateFunctionPercentile::data(place).read(buf);
931
108
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
90
                     Arena&) const override {
930
90
        AggregateFunctionPercentile::data(place).read(buf);
931
90
    }
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
52
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
52
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
52
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
52
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
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
4
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_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
1
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_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
76
    DataTypePtr get_return_type() const override {
954
76
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
955
76
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE15get_return_typeEv
_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
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
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
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
0
    void check_input_columns_type(const IColumn** columns) const override {
979
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
980
0
        check_percentile_array_column_type(*this, *columns[1], 1);
981
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
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
5
    void reset(AggregateDataPtr __restrict place) const override {
984
5
        AggregateFunctionPercentileArray::data(place).reset();
985
5
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5resetEPc
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
75
               Arena&) const override {
989
75
        AggregateFunctionPercentileArray::data(place).merge(
990
75
                AggregateFunctionPercentileArray::data(rhs));
991
75
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
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
34
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
994
34
        AggregateFunctionPercentileArray::data(place).write(buf);
995
34
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
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
42
                     Arena&) const override {
999
42
        AggregateFunctionPercentileArray::data(place).read(buf);
1000
42
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
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
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
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
_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
81
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
7
    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
10
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
15
    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
70
    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
54
    String get_name() const override { return "percentile_v2"; }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_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.01k
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
1031
75
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
1031
437
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1031
57
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1031
48
    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
370
    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
810
             Arena&) const override {
1035
810
        const auto& sources =
1036
810
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
810
        const auto& quantile =
1038
810
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
810
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
810
                                                                    quantile.get_data()[0]);
1041
810
    }
_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
21
             Arena&) const override {
1035
21
        const auto& sources =
1036
21
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
21
        const auto& quantile =
1038
21
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
21
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
21
                                                                    quantile.get_data()[0]);
1041
21
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
5
             Arena&) const override {
1035
5
        const auto& sources =
1036
5
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
5
        const auto& quantile =
1038
5
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
5
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
5
                                                                    quantile.get_data()[0]);
1041
5
    }
_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
3
                                Arena&) const override {
1045
3
        const auto& sources =
1046
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1047
3
        const auto& quantile =
1048
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1049
3
        DCHECK_EQ(sources.get_data().size(), batch_size);
1050
3
        AggregateFunctionPercentileV2::data(place).add_single_range(
1051
3
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
1052
3
    }
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
1
                                Arena&) const override {
1045
1
        const auto& sources =
1046
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1047
1
        const auto& quantile =
1048
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1049
        DCHECK_EQ(sources.get_data().size(), batch_size);
1050
1
        AggregateFunctionPercentileV2::data(place).add_single_range(
1051
1
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
1052
1
    }
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
274
    void check_input_columns_type(const IColumn** columns) const override {
1067
274
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
274
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
274
    }
_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
186
    void check_input_columns_type(const IColumn** columns) const override {
1067
186
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
186
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
186
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
16
    void check_input_columns_type(const IColumn** columns) const override {
1067
16
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
16
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
16
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
5
    void check_input_columns_type(const IColumn** columns) const override {
1067
5
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
5
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
5
    }
_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
113
    void reset(AggregateDataPtr __restrict place) const override {
1072
113
        AggregateFunctionPercentileV2::data(place).reset();
1073
113
    }
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
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5resetEPc
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
193
               Arena&) const override {
1077
193
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
193
    }
_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
2
               Arena&) const override {
1077
2
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
4
               Arena&) const override {
1077
4
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
4
    }
_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
96
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
96
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
96
    }
_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
2
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
2
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
4
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
4
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
4
    }
_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
100
                     Arena&) const override {
1086
100
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
100
    }
_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
2
                     Arena&) const override {
1086
2
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
2
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
4
                     Arena&) const override {
1086
4
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
4
    }
_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
521
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
521
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
521
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
521
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
29
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
29
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
29
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
29
    }
_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
16
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
16
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
16
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
16
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
5
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
5
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
5
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
5
    }
_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
67
    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
15
    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
18
    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
468
    DataTypePtr get_return_type() const override {
1110
468
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
468
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
1109
39
    DataTypePtr get_return_type() const override {
1110
39
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
39
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
1109
45
    DataTypePtr get_return_type() const override {
1110
45
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
45
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1109
76
    DataTypePtr get_return_type() const override {
1110
76
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
76
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1109
54
    DataTypePtr get_return_type() const override {
1110
54
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
54
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
1109
39
    DataTypePtr get_return_type() const override {
1110
39
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
39
    }
_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
204
    DataTypePtr get_return_type() const override {
1110
204
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
204
    }
1112
1113
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
1114
381
             Arena&) const override {
1115
381
        const auto& sources =
1116
381
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
381
        const auto& quantile_array =
1118
381
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
381
        const auto& offset_column_data = quantile_array.get_offsets();
1120
381
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
381
                                        quantile_array.get_data())
1122
381
                                        .get_null_map_data();
1123
381
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
381
                                            quantile_array.get_data())
1125
381
                                            .get_nested_column();
1126
381
        const auto& nested_column_data =
1127
381
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
381
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
381
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
381
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
381
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
381
    }
_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
17
             Arena&) const override {
1115
17
        const auto& sources =
1116
17
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
17
        const auto& quantile_array =
1118
17
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
17
        const auto& offset_column_data = quantile_array.get_offsets();
1120
17
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
17
                                        quantile_array.get_data())
1122
17
                                        .get_null_map_data();
1123
17
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
17
                                            quantile_array.get_data())
1125
17
                                            .get_nested_column();
1126
17
        const auto& nested_column_data =
1127
17
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
17
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
17
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
17
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
17
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
17
    }
_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
268
             Arena&) const override {
1115
268
        const auto& sources =
1116
268
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
268
        const auto& quantile_array =
1118
268
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
268
        const auto& offset_column_data = quantile_array.get_offsets();
1120
268
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
268
                                        quantile_array.get_data())
1122
268
                                        .get_null_map_data();
1123
268
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
268
                                            quantile_array.get_data())
1125
268
                                            .get_nested_column();
1126
268
        const auto& nested_column_data =
1127
268
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
268
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
268
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
268
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
268
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
268
    }
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
73
    void check_input_columns_type(const IColumn** columns) const override {
1179
73
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
73
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
73
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
10
    void check_input_columns_type(const IColumn** columns) const override {
1179
10
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
10
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
10
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
15
    void check_input_columns_type(const IColumn** columns) const override {
1179
15
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
15
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
13
    void check_input_columns_type(const IColumn** columns) const override {
1179
13
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
13
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
14
    void check_input_columns_type(const IColumn** columns) const override {
1179
14
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
14
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
14
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
10
    void check_input_columns_type(const IColumn** columns) const override {
1179
10
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
10
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
10
    }
_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
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
    }
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
149
               Arena&) const override {
1189
149
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
149
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
149
    }
_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
4
               Arena&) const override {
1189
4
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
4
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
4
    }
_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
129
               Arena&) const override {
1189
129
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
129
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
129
    }
1192
1193
81
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
81
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
81
    }
_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
4
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
4
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
4
    }
_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
61
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
61
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
61
    }
1196
1197
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
1198
89
                     Arena&) const override {
1199
89
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
89
    }
_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
4
                     Arena&) const override {
1199
4
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
4
    }
_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
69
                     Arena&) const override {
1199
69
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
69
    }
1201
1202
244
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
244
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
244
        auto& to_nested_col = to_arr.get_data();
1205
244
        if (is_column_nullable(to_nested_col)) {
1206
244
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
244
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
244
                    col_null->get_nested_column());
1209
244
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
244
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
244
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
244
    }
_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
17
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
17
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
17
        auto& to_nested_col = to_arr.get_data();
1205
17
        if (is_column_nullable(to_nested_col)) {
1206
17
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
17
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
17
                    col_null->get_nested_column());
1209
17
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
17
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
17
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
17
    }
_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
175
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
175
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
175
        auto& to_nested_col = to_arr.get_data();
1205
175
        if (is_column_nullable(to_nested_col)) {
1206
175
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
175
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
175
                    col_null->get_nested_column());
1209
175
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
175
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
175
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
175
    }
1215
};
1216
1217
} // namespace doris