Coverage Report

Created: 2026-11-05 15:13

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
213
                                               const IColumn& column, size_t index) {
54
213
    const auto* array_column = check_and_get_column<ColumnArray>(column);
55
213
    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
213
    const auto* nullable_column = check_and_get_column<ColumnNullable>(array_column->get_data());
63
213
    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
213
    if (UNLIKELY(check_and_get_column<ColumnFloat64>(nullable_column->get_nested_column()) ==
71
213
                 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
213
}
78
79
struct PercentileApproxState {
80
    static constexpr double INIT_QUANTILE = -1.0;
81
1.25k
    PercentileApproxState() = default;
82
1.25k
    ~PercentileApproxState() = default;
83
84
1.16k
    void init(double quantile, float compression = 10000) {
85
1.16k
        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
736
            if (!std::isfinite(compression) || compression < 2048 || compression > 10000) {
91
0
                compression = 10000;
92
0
            }
93
736
            digest = TDigest::create_unique(compression);
94
736
            check_quantile(quantile);
95
736
            target_quantile = quantile;
96
736
            compressions = compression;
97
736
            init_flag = true;
98
736
        }
99
1.16k
    }
100
101
184
    void write(BufferWritable& buf) const {
102
184
        buf.write_binary(init_flag);
103
184
        if (!init_flag) {
104
44
            return;
105
44
        }
106
107
140
        buf.write_binary(target_quantile);
108
140
        buf.write_binary(compressions);
109
140
        uint32_t serialize_size = digest->serialized_size();
110
140
        std::string result(serialize_size, '0');
111
140
        DCHECK(digest.get() != nullptr);
112
140
        digest->serialize((uint8_t*)result.c_str());
113
114
140
        buf.write_binary(result);
115
140
    }
116
117
200
    void read(BufferReadable& buf) {
118
200
        buf.read_binary(init_flag);
119
200
        if (!init_flag) {
120
44
            return;
121
44
        }
122
123
156
        buf.read_binary(target_quantile);
124
156
        buf.read_binary(compressions);
125
156
        std::string str;
126
156
        buf.read_binary(str);
127
156
        digest = TDigest::create_unique(compressions);
128
156
        digest->unserialize((uint8_t*)str.c_str());
129
156
    }
130
131
701
    double get() const {
132
701
        if (init_flag) {
133
655
            return digest->quantile(static_cast<float>(target_quantile));
134
655
        } else {
135
46
            return std::nan("");
136
46
        }
137
701
    }
138
139
356
    void merge(const PercentileApproxState& rhs) {
140
356
        if (!rhs.init_flag || rhs.digest->total_size() == 0) {
141
166
            return;
142
166
        }
143
190
        if (!init_flag || digest->total_size() == 0) {
144
116
            target_quantile = rhs.target_quantile;
145
116
            compressions = rhs.compressions;
146
116
            digest = TDigest::create_unique(compressions);
147
116
            init_flag = true;
148
116
        } else if (UNLIKELY(target_quantile != rhs.target_quantile ||
149
74
                            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
158
        digest->merge(rhs.digest.get());
155
158
    }
156
157
856
    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
141
    void reset() {
168
141
        target_quantile = INIT_QUANTILE;
169
141
        init_flag = false;
170
141
        digest = TDigest::create_unique(compressions);
171
141
    }
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
241
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
167
            : 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
31
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
_ZN5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
184
23
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
185
186
158
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
31
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
117
    String get_name() const override { return "percentile_approx"; }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE8get_nameB5cxx11Ev
Line
Count
Source
186
10
    String get_name() const override { return "percentile_approx"; }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE8get_nameB5cxx11Ev
187
188
141
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5resetEPc
Line
Count
Source
188
28
    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
356
               Arena&) const override {
192
356
        this->data(place).merge(this->data(rhs));
193
356
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
200
               Arena&) const override {
192
200
        this->data(place).merge(this->data(rhs));
193
200
    }
_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
71
               Arena&) const override {
192
71
        this->data(place).merge(this->data(rhs));
193
71
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
191
40
               Arena&) const override {
192
40
        this->data(place).merge(this->data(rhs));
193
40
    }
194
195
184
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
184
        this->data(place).write(buf);
197
184
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
103
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
103
        this->data(place).write(buf);
197
103
    }
_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
37
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
37
        this->data(place).write(buf);
197
37
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
195
24
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
196
24
        this->data(place).write(buf);
197
24
    }
198
199
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
200
200
                     Arena&) const override {
201
200
        this->data(place).read(buf);
202
200
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
107
                     Arena&) const override {
201
107
        this->data(place).read(buf);
202
107
    }
_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
41
                     Arena&) const override {
201
41
        this->data(place).read(buf);
202
41
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
200
28
                     Arena&) const override {
201
28
        this->data(place).read(buf);
202
28
    }
203
204
273
    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
782
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
782
        }
208
273
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
47
    void check_input_columns_type(const IColumn** columns) const override {
205
141
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
94
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
94
        }
208
47
    }
_ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
204
204
    void check_input_columns_type(const IColumn** columns) const override {
205
816
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
206
612
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
207
612
        }
208
204
    }
_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
167
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
218
167
                      argument_types_) {}
219
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
220
458
             Arena&) const override {
221
458
        const auto& sources =
222
458
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
223
458
        const auto& quantile =
224
458
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
225
458
        this->data(place).init(quantile.get_element(0));
226
458
        this->data(place).add(sources.get_element(row_num));
227
458
    }
228
229
503
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
230
231
313
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
232
313
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
233
313
        col.get_data().push_back(this->data(place).get());
234
313
    }
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
605
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
261
262
239
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
263
239
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
264
239
        col.get_data().push_back(this->data(place).get());
265
239
    }
266
};
267
268
class AggregateFunctionPercentileApproxWeightedThreeParams final
269
        : public AggregateFunctionPercentileApproxBase<
270
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
271
          MultiExpression,
272
          NullableAggregateFunction {
273
public:
274
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
275
31
            : AggregateFunctionPercentileApproxBase<
276
31
                      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
204
    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
23
            : AggregateFunctionPercentileApproxBase<
308
23
                      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
97
    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
154
    void write(BufferWritable& buf) const {
568
154
        buf.write_binary(inited_flag);
569
154
        if (!inited_flag) {
570
14
            return;
571
14
        }
572
140
        int size_num = cast_set<int>(vec_quantile.size());
573
140
        buf.write_binary(size_num);
574
143
        for (const auto& quantile : vec_quantile) {
575
143
            buf.write_binary(quantile);
576
143
        }
577
143
        for (auto& counts : vec_counts) {
578
143
            counts.serialize(buf);
579
143
        }
580
140
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Line
Count
Source
567
52
    void write(BufferWritable& buf) const {
568
52
        buf.write_binary(inited_flag);
569
52
        if (!inited_flag) {
570
0
            return;
571
0
        }
572
52
        int size_num = cast_set<int>(vec_quantile.size());
573
52
        buf.write_binary(size_num);
574
52
        for (const auto& quantile : vec_quantile) {
575
52
            buf.write_binary(quantile);
576
52
        }
577
52
        for (auto& counts : vec_counts) {
578
52
            counts.serialize(buf);
579
52
        }
580
52
    }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
567
54
    void write(BufferWritable& buf) const {
568
54
        buf.write_binary(inited_flag);
569
54
        if (!inited_flag) {
570
0
            return;
571
0
        }
572
54
        int size_num = cast_set<int>(vec_quantile.size());
573
54
        buf.write_binary(size_num);
574
54
        for (const auto& quantile : vec_quantile) {
575
54
            buf.write_binary(quantile);
576
54
        }
577
54
        for (auto& counts : vec_counts) {
578
54
            counts.serialize(buf);
579
54
        }
580
54
    }
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
220
    void read(BufferReadable& buf) {
583
220
        buf.read_binary(inited_flag);
584
220
        if (!inited_flag) {
585
14
            return;
586
14
        }
587
206
        int size_num = 0;
588
206
        buf.read_binary(size_num);
589
206
        double data = 0.0;
590
206
        vec_quantile.clear();
591
417
        for (int i = 0; i < size_num; ++i) {
592
211
            buf.read_binary(data);
593
211
            vec_quantile.emplace_back(data);
594
211
        }
595
206
        vec_counts.clear();
596
206
        vec_counts.resize(size_num);
597
417
        for (int i = 0; i < size_num; ++i) {
598
211
            vec_counts[i].unserialize(buf);
599
211
        }
600
206
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Line
Count
Source
582
52
    void read(BufferReadable& buf) {
583
52
        buf.read_binary(inited_flag);
584
52
        if (!inited_flag) {
585
0
            return;
586
0
        }
587
52
        int size_num = 0;
588
52
        buf.read_binary(size_num);
589
52
        double data = 0.0;
590
52
        vec_quantile.clear();
591
104
        for (int i = 0; i < size_num; ++i) {
592
52
            buf.read_binary(data);
593
52
            vec_quantile.emplace_back(data);
594
52
        }
595
52
        vec_counts.clear();
596
52
        vec_counts.resize(size_num);
597
104
        for (int i = 0; i < size_num; ++i) {
598
52
            vec_counts[i].unserialize(buf);
599
52
        }
600
52
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
582
108
    void read(BufferReadable& buf) {
583
108
        buf.read_binary(inited_flag);
584
108
        if (!inited_flag) {
585
0
            return;
586
0
        }
587
108
        int size_num = 0;
588
108
        buf.read_binary(size_num);
589
108
        double data = 0.0;
590
108
        vec_quantile.clear();
591
216
        for (int i = 0; i < size_num; ++i) {
592
108
            buf.read_binary(data);
593
108
            vec_quantile.emplace_back(data);
594
108
        }
595
108
        vec_counts.clear();
596
108
        vec_counts.resize(size_num);
597
216
        for (int i = 0; i < size_num; ++i) {
598
108
            vec_counts[i].unserialize(buf);
599
108
        }
600
108
    }
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
219
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
219
        if (!inited_flag) {
605
209
            vec_counts.resize(arg_size);
606
209
            vec_quantile.resize(arg_size, -1);
607
209
            inited_flag = true;
608
424
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
215
                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
215
                check_quantile(quantiles[i]);
615
215
                vec_quantile[i] = quantiles[i];
616
215
            }
617
209
        }
618
445
        for (int i = 0; i < arg_size; ++i) {
619
226
            vec_counts[i].increment(source);
620
226
        }
621
219
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Line
Count
Source
603
44
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
604
44
        if (!inited_flag) {
605
44
            vec_counts.resize(arg_size);
606
44
            vec_quantile.resize(arg_size, -1);
607
44
            inited_flag = true;
608
88
            for (int i = 0; i < arg_size; ++i) {
609
                // throw Exception func call percentile_array(id, [1,0,null])
610
44
                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
44
                check_quantile(quantiles[i]);
615
44
                vec_quantile[i] = quantiles[i];
616
44
            }
617
44
        }
618
88
        for (int i = 0; i < arg_size; ++i) {
619
44
            vec_counts[i].increment(source);
620
44
        }
621
44
    }
_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
272
    void merge(const PercentileState& rhs) {
636
272
        if (rhs.vec_counts.empty()) {
637
32
            return;
638
32
        }
639
240
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
240
        if (vec_counts.empty()) {
641
116
            vec_counts.resize(size_num);
642
116
            vec_quantile = rhs.vec_quantile;
643
116
            inited_flag = true;
644
124
        } 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
439
        for (int i = 0; i < size_num; ++i) {
650
223
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
223
        }
652
216
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Line
Count
Source
635
59
    void merge(const PercentileState& rhs) {
636
59
        if (rhs.vec_counts.empty()) {
637
0
            return;
638
0
        }
639
59
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
59
        if (vec_counts.empty()) {
641
21
            vec_counts.resize(size_num);
642
21
            vec_quantile = rhs.vec_quantile;
643
21
            inited_flag = true;
644
38
        } 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
118
        for (int i = 0; i < size_num; ++i) {
650
59
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
59
        }
652
59
    }
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
635
108
    void merge(const PercentileState& rhs) {
636
108
        if (rhs.vec_counts.empty()) {
637
0
            return;
638
0
        }
639
108
        int size_num = cast_set<int>(rhs.vec_quantile.size());
640
108
        if (vec_counts.empty()) {
641
56
            vec_counts.resize(size_num);
642
56
            vec_quantile = rhs.vec_quantile;
643
56
            inited_flag = true;
644
56
        } 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
216
        for (int i = 0; i < size_num; ++i) {
650
108
            vec_counts[i].merge(&(rhs.vec_counts[i]));
651
108
        }
652
108
    }
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
29
    void reset() {
655
29
        vec_counts.clear();
656
29
        vec_quantile.clear();
657
29
        inited_flag = false;
658
29
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
654
22
    void reset() {
655
22
        vec_counts.clear();
656
22
        vec_quantile.clear();
657
22
        inited_flag = false;
658
22
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5resetEv
_ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5resetEv
Line
Count
Source
654
7
    void reset() {
655
7
        vec_counts.clear();
656
7
        vec_quantile.clear();
657
7
        inited_flag = false;
658
7
    }
659
660
58
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE3getEv
Line
Count
Source
660
6
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
660
24
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE3getEv
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE3getEv
_ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE3getEv
Line
Count
Source
660
28
    double get() const { return vec_counts.empty() ? 0 : vec_counts[0].terminate(vec_quantile[0]); }
661
662
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
1.11k
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
1.11k
        if (!inited_flag) {
678
591
            _set_single_level(quantile);
679
591
            inited_flag = true;
680
591
        }
681
1.11k
        _append(data, count);
682
1.11k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16add_single_rangeEPKamd
Line
Count
Source
676
31
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
31
        if (!inited_flag) {
678
6
            _set_single_level(quantile);
679
6
            inited_flag = true;
680
6
        }
681
31
        _append(data, count);
682
31
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16add_single_rangeEPKsmd
Line
Count
Source
676
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
258
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
258
        if (!inited_flag) {
678
86
            _set_single_level(quantile);
679
86
            inited_flag = true;
680
86
        }
681
258
        _append(data, count);
682
258
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16add_single_rangeEPKlmd
Line
Count
Source
676
72
    void add_single_range(const ValueType* data, size_t count, double quantile) {
677
72
        if (!inited_flag) {
678
32
            _set_single_level(quantile);
679
32
            inited_flag = true;
680
32
        }
681
72
        _append(data, count);
682
72
    }
_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
893
                        size_t start, int64_t arg_size) {
687
893
        if (!inited_flag) {
688
543
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
543
            inited_flag = true;
690
543
        }
691
893
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
880
        _append(data, count);
695
880
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
15
                        size_t start, int64_t arg_size) {
687
15
        if (!inited_flag) {
688
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
12
            inited_flag = true;
690
12
        }
691
15
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
15
        _append(data, count);
695
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE14add_many_rangeEPKsmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
30
                        size_t start, int64_t arg_size) {
687
30
        if (!inited_flag) {
688
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
16
            inited_flag = true;
690
16
        }
691
30
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
30
        _append(data, count);
695
30
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE14add_many_rangeEPKimRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
481
                        size_t start, int64_t arg_size) {
687
481
        if (!inited_flag) {
688
234
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
234
            inited_flag = true;
690
234
        }
691
481
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
481
        _append(data, count);
695
481
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE14add_many_rangeEPKlmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
33
                        size_t start, int64_t arg_size) {
687
33
        if (!inited_flag) {
688
16
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
16
            inited_flag = true;
690
16
        }
691
33
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
33
        _append(data, count);
695
33
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE14add_many_rangeEPKnmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
15
                        size_t start, int64_t arg_size) {
687
15
        if (!inited_flag) {
688
12
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
12
            inited_flag = true;
690
12
        }
691
15
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
15
        _append(data, count);
695
15
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE14add_many_rangeEPKfmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
3
                        size_t start, int64_t arg_size) {
687
3
        if (!inited_flag) {
688
2
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
2
            inited_flag = true;
690
2
        }
691
3
        if (levels.empty()) {
692
0
            return;
693
0
        }
694
3
        _append(data, count);
695
3
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE14add_many_rangeEPKdmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Line
Count
Source
686
316
                        size_t start, int64_t arg_size) {
687
316
        if (!inited_flag) {
688
251
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
689
251
            inited_flag = true;
690
251
        }
691
316
        if (levels.empty()) {
692
13
            return;
693
13
        }
694
303
        _append(data, count);
695
303
    }
696
697
505
    void write(BufferWritable& buf) const {
698
505
        buf.write_binary(inited_flag);
699
505
        if (!inited_flag) {
700
44
            return;
701
44
        }
702
703
461
        levels.write(buf);
704
461
        size_t size = values.size();
705
461
        buf.write_binary(size);
706
461
        if (size > 0) {
707
422
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
422
        }
709
461
    }
_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
269
    void write(BufferWritable& buf) const {
698
269
        buf.write_binary(inited_flag);
699
269
        if (!inited_flag) {
700
1
            return;
701
1
        }
702
703
268
        levels.write(buf);
704
268
        size_t size = values.size();
705
268
        buf.write_binary(size);
706
268
        if (size > 0) {
707
268
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
268
        }
709
268
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Line
Count
Source
697
34
    void write(BufferWritable& buf) const {
698
34
        buf.write_binary(inited_flag);
699
34
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
34
        levels.write(buf);
704
34
        size_t size = values.size();
705
34
        buf.write_binary(size);
706
34
        if (size > 0) {
707
34
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
34
        }
709
34
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Line
Count
Source
697
3
    void write(BufferWritable& buf) const {
698
3
        buf.write_binary(inited_flag);
699
3
        if (!inited_flag) {
700
0
            return;
701
0
        }
702
703
3
        levels.write(buf);
704
3
        size_t size = values.size();
705
3
        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
3
    }
_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
181
    void write(BufferWritable& buf) const {
698
181
        buf.write_binary(inited_flag);
699
181
        if (!inited_flag) {
700
42
            return;
701
42
        }
702
703
139
        levels.write(buf);
704
139
        size_t size = values.size();
705
139
        buf.write_binary(size);
706
139
        if (size > 0) {
707
99
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
708
99
        }
709
139
    }
710
711
518
    void read(BufferReadable& buf) {
712
518
        reset();
713
518
        buf.read_binary(inited_flag);
714
518
        if (!inited_flag) {
715
44
            return;
716
44
        }
717
718
474
        levels.read(buf);
719
474
        size_t size = 0;
720
474
        buf.read_binary(size);
721
474
        values.resize(size);
722
474
        if (size > 0) {
723
434
            auto raw = buf.read(sizeof(ValueType) * size);
724
434
            memcpy(values.data(), raw.data, raw.size);
725
434
        }
726
474
    }
_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
269
    void read(BufferReadable& buf) {
712
269
        reset();
713
269
        buf.read_binary(inited_flag);
714
269
        if (!inited_flag) {
715
1
            return;
716
1
        }
717
718
268
        levels.read(buf);
719
268
        size_t size = 0;
720
268
        buf.read_binary(size);
721
268
        values.resize(size);
722
268
        if (size > 0) {
723
268
            auto raw = buf.read(sizeof(ValueType) * size);
724
268
            memcpy(values.data(), raw.data, raw.size);
725
268
        }
726
268
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Line
Count
Source
711
34
    void read(BufferReadable& buf) {
712
34
        reset();
713
34
        buf.read_binary(inited_flag);
714
34
        if (!inited_flag) {
715
0
            return;
716
0
        }
717
718
34
        levels.read(buf);
719
34
        size_t size = 0;
720
34
        buf.read_binary(size);
721
34
        values.resize(size);
722
34
        if (size > 0) {
723
34
            auto raw = buf.read(sizeof(ValueType) * size);
724
34
            memcpy(values.data(), raw.data, raw.size);
725
34
        }
726
34
    }
_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
193
    void read(BufferReadable& buf) {
712
193
        reset();
713
193
        buf.read_binary(inited_flag);
714
193
        if (!inited_flag) {
715
42
            return;
716
42
        }
717
718
151
        levels.read(buf);
719
151
        size_t size = 0;
720
151
        buf.read_binary(size);
721
151
        values.resize(size);
722
151
        if (size > 0) {
723
111
            auto raw = buf.read(sizeof(ValueType) * size);
724
111
            memcpy(values.data(), raw.data, raw.size);
725
111
        }
726
151
    }
727
728
675
    void merge(const PercentileExactState& rhs) {
729
675
        if (!rhs.inited_flag) {
730
86
            return;
731
86
        }
732
733
589
        if (values.empty()) {
734
368
            levels = rhs.levels;
735
368
            inited_flag = true;
736
368
        } else if (rhs.values.empty()) {
737
18
            return;
738
203
        } 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
547
        _append(rhs.values.data(), rhs.values.size());
743
547
    }
_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
273
    void merge(const PercentileExactState& rhs) {
729
273
        if (!rhs.inited_flag) {
730
1
            return;
731
1
        }
732
733
272
        if (values.empty()) {
734
172
            levels = rhs.levels;
735
172
            inited_flag = true;
736
172
        } else if (rhs.values.empty()) {
737
0
            return;
738
100
        } 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
272
        _append(rhs.values.data(), rhs.values.size());
743
272
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Line
Count
Source
728
34
    void merge(const PercentileExactState& rhs) {
729
34
        if (!rhs.inited_flag) {
730
0
            return;
731
0
        }
732
733
34
        if (values.empty()) {
734
20
            levels = rhs.levels;
735
20
            inited_flag = true;
736
20
        } else if (rhs.values.empty()) {
737
0
            return;
738
14
        } 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
34
        _append(rhs.values.data(), rhs.values.size());
743
34
    }
_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
346
    void merge(const PercentileExactState& rhs) {
729
346
        if (!rhs.inited_flag) {
730
84
            return;
731
84
        }
732
733
262
        if (values.empty()) {
734
166
            levels = rhs.levels;
735
166
            inited_flag = true;
736
166
        } else if (rhs.values.empty()) {
737
18
            return;
738
78
        } else if (UNLIKELY(levels.quantiles != rhs.levels.quantiles)) {
739
24
            throw Exception(ErrorCode::INVALID_ARGUMENT,
740
24
                            "percentile aggregate states have incompatible quantiles");
741
24
        }
742
220
        _append(rhs.values.data(), rhs.values.size());
743
220
    }
744
745
650
    void reset() {
746
650
        values.clear();
747
650
        levels.clear();
748
650
        inited_flag = false;
749
650
    }
_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
278
    void reset() {
746
278
        values.clear();
747
278
        levels.clear();
748
278
        inited_flag = false;
749
278
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5resetEv
Line
Count
Source
745
34
    void reset() {
746
34
        values.clear();
747
34
        levels.clear();
748
34
        inited_flag = false;
749
34
    }
_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
214
    void reset() {
746
214
        values.clear();
747
214
        levels.clear();
748
214
        inited_flag = false;
749
214
    }
750
751
580
    double get() const {
752
580
        if (!inited_flag || levels.empty() || values.empty()) {
753
134
            return std::numeric_limits<double>::quiet_NaN();
754
134
        }
755
756
580
        DCHECK_EQ(levels.quantiles.size(), 1);
757
446
        return _get_result(levels.quantiles[0]);
758
580
    }
_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
60
    double get() const {
752
60
        if (!inited_flag || levels.empty() || values.empty()) {
753
0
            return std::numeric_limits<double>::quiet_NaN();
754
0
        }
755
756
60
        DCHECK_EQ(levels.quantiles.size(), 1);
757
60
        return _get_result(levels.quantiles[0]);
758
60
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE3getEv
Line
Count
Source
751
20
    double get() const {
752
20
        if (!inited_flag || levels.empty() || values.empty()) {
753
1
            return std::numeric_limits<double>::quiet_NaN();
754
1
        }
755
756
20
        DCHECK_EQ(levels.quantiles.size(), 1);
757
19
        return _get_result(levels.quantiles[0]);
758
20
    }
_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
410
    void insert_result_into(IColumn& to) const {
761
410
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
410
        if (!inited_flag || levels.empty()) {
763
22
            return;
764
22
        }
765
766
388
        size_t old_size = column_data.size();
767
388
        size_t size = levels.quantiles.size();
768
388
        column_data.resize(old_size + size);
769
388
        auto* result = column_data.data() + old_size;
770
771
388
        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
347
        if (values.size() == 1) {
779
604
            for (size_t i = 0; i < size; ++i) {
780
401
                result[i] = static_cast<double>(values.front());
781
401
            }
782
203
            return;
783
203
        }
784
785
144
        size_t prev_index = 0;
786
144
        const auto& quantiles = levels.quantiles;
787
144
        const auto& permutation = levels.get_permutation();
788
451
        for (size_t i = 0; i < size; ++i) {
789
307
            auto level_index = permutation[i];
790
307
            auto level = quantiles[level_index];
791
307
            double u = static_cast<double>(values.size() - 1) * level;
792
307
            auto index = static_cast<size_t>(u);
793
794
307
            if (index + 1 >= values.size()) {
795
4
                result[level_index] =
796
4
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
303
            } else {
798
303
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
303
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
303
                result[level_index] =
801
303
                        static_cast<double>(values[index]) +
802
303
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
303
                                                            static_cast<double>(values[index]));
804
303
                prev_index = index;
805
303
            }
806
307
        }
807
144
    }
_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
162
    void insert_result_into(IColumn& to) const {
761
162
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
162
        if (!inited_flag || levels.empty()) {
763
4
            return;
764
4
        }
765
766
158
        size_t old_size = column_data.size();
767
158
        size_t size = levels.quantiles.size();
768
158
        column_data.resize(old_size + size);
769
158
        auto* result = column_data.data() + old_size;
770
771
158
        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
158
        if (values.size() == 1) {
779
293
            for (size_t i = 0; i < size; ++i) {
780
203
                result[i] = static_cast<double>(values.front());
781
203
            }
782
90
            return;
783
90
        }
784
785
68
        size_t prev_index = 0;
786
68
        const auto& quantiles = levels.quantiles;
787
68
        const auto& permutation = levels.get_permutation();
788
217
        for (size_t i = 0; i < size; ++i) {
789
149
            auto level_index = permutation[i];
790
149
            auto level = quantiles[level_index];
791
149
            double u = static_cast<double>(values.size() - 1) * level;
792
149
            auto index = static_cast<size_t>(u);
793
794
149
            if (index + 1 >= values.size()) {
795
4
                result[level_index] =
796
4
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
145
            } else {
798
145
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
145
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
145
                result[level_index] =
801
145
                        static_cast<double>(values[index]) +
802
145
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
145
                                                            static_cast<double>(values[index]));
804
145
                prev_index = index;
805
145
            }
806
149
        }
807
68
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
13
    void insert_result_into(IColumn& to) const {
761
13
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
13
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
12
        size_t old_size = column_data.size();
767
12
        size_t size = levels.quantiles.size();
768
12
        column_data.resize(old_size + size);
769
12
        auto* result = column_data.data() + old_size;
770
771
12
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
12
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
4
        size_t prev_index = 0;
786
4
        const auto& quantiles = levels.quantiles;
787
4
        const auto& permutation = levels.get_permutation();
788
15
        for (size_t i = 0; i < size; ++i) {
789
11
            auto level_index = permutation[i];
790
11
            auto level = quantiles[level_index];
791
11
            double u = static_cast<double>(values.size() - 1) * level;
792
11
            auto index = static_cast<size_t>(u);
793
794
11
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
11
            } else {
798
11
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
11
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
11
                result[level_index] =
801
11
                        static_cast<double>(values[index]) +
802
11
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
11
                                                            static_cast<double>(values[index]));
804
11
                prev_index = index;
805
11
            }
806
11
        }
807
4
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
12
    void insert_result_into(IColumn& to) const {
761
12
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
12
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
11
        size_t old_size = column_data.size();
767
11
        size_t size = levels.quantiles.size();
768
11
        column_data.resize(old_size + size);
769
11
        auto* result = column_data.data() + old_size;
770
771
11
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
11
        if (values.size() == 1) {
779
32
            for (size_t i = 0; i < size; ++i) {
780
24
                result[i] = static_cast<double>(values.front());
781
24
            }
782
8
            return;
783
8
        }
784
785
3
        size_t prev_index = 0;
786
3
        const auto& quantiles = levels.quantiles;
787
3
        const auto& permutation = levels.get_permutation();
788
11
        for (size_t i = 0; i < size; ++i) {
789
8
            auto level_index = permutation[i];
790
8
            auto level = quantiles[level_index];
791
8
            double u = static_cast<double>(values.size() - 1) * level;
792
8
            auto index = static_cast<size_t>(u);
793
794
8
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
8
            } else {
798
8
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
8
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
8
                result[level_index] =
801
8
                        static_cast<double>(values[index]) +
802
8
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
8
                                                            static_cast<double>(values[index]));
804
8
                prev_index = index;
805
8
            }
806
8
        }
807
3
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
2
    void insert_result_into(IColumn& to) const {
761
2
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
2
        if (!inited_flag || levels.empty()) {
763
1
            return;
764
1
        }
765
766
1
        size_t old_size = column_data.size();
767
1
        size_t size = levels.quantiles.size();
768
1
        column_data.resize(old_size + size);
769
1
        auto* result = column_data.data() + old_size;
770
771
1
        if (values.empty()) {
772
0
            for (size_t i = 0; i < size; ++i) {
773
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
0
            }
775
0
            return;
776
0
        }
777
778
1
        if (values.size() == 1) {
779
0
            for (size_t i = 0; i < size; ++i) {
780
0
                result[i] = static_cast<double>(values.front());
781
0
            }
782
0
            return;
783
0
        }
784
785
1
        size_t prev_index = 0;
786
1
        const auto& quantiles = levels.quantiles;
787
1
        const auto& permutation = levels.get_permutation();
788
3
        for (size_t i = 0; i < size; ++i) {
789
2
            auto level_index = permutation[i];
790
2
            auto level = quantiles[level_index];
791
2
            double u = static_cast<double>(values.size() - 1) * level;
792
2
            auto index = static_cast<size_t>(u);
793
794
2
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
2
            } else {
798
2
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
2
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
2
                result[level_index] =
801
2
                        static_cast<double>(values[index]) +
802
2
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
2
                                                            static_cast<double>(values[index]));
804
2
                prev_index = index;
805
2
            }
806
2
        }
807
1
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
Line
Count
Source
760
196
    void insert_result_into(IColumn& to) const {
761
196
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
762
196
        if (!inited_flag || levels.empty()) {
763
13
            return;
764
13
        }
765
766
183
        size_t old_size = column_data.size();
767
183
        size_t size = levels.quantiles.size();
768
183
        column_data.resize(old_size + size);
769
183
        auto* result = column_data.data() + old_size;
770
771
183
        if (values.empty()) {
772
84
            for (size_t i = 0; i < size; ++i) {
773
43
                result[i] = std::numeric_limits<double>::quiet_NaN();
774
43
            }
775
41
            return;
776
41
        }
777
778
142
        if (values.size() == 1) {
779
183
            for (size_t i = 0; i < size; ++i) {
780
102
                result[i] = static_cast<double>(values.front());
781
102
            }
782
81
            return;
783
81
        }
784
785
61
        size_t prev_index = 0;
786
61
        const auto& quantiles = levels.quantiles;
787
61
        const auto& permutation = levels.get_permutation();
788
179
        for (size_t i = 0; i < size; ++i) {
789
118
            auto level_index = permutation[i];
790
118
            auto level = quantiles[level_index];
791
118
            double u = static_cast<double>(values.size() - 1) * level;
792
118
            auto index = static_cast<size_t>(u);
793
794
118
            if (index + 1 >= values.size()) {
795
0
                result[level_index] =
796
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
797
118
            } else {
798
118
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
799
118
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
800
118
                result[level_index] =
801
118
                        static_cast<double>(values[index]) +
802
118
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
803
118
                                                            static_cast<double>(values[index]));
804
118
                prev_index = index;
805
118
            }
806
118
        }
807
61
    }
808
809
private:
810
590
    void _set_single_level(double quantile) {
811
590
        DCHECK(levels.empty());
812
590
        check_quantile(quantile);
813
590
        levels.quantiles.push_back(quantile);
814
590
        levels.permutation.push_back(0);
815
590
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE17_set_single_levelEd
Line
Count
Source
810
6
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
6
        check_quantile(quantile);
813
6
        levels.quantiles.push_back(quantile);
814
6
        levels.permutation.push_back(0);
815
6
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE17_set_single_levelEd
Line
Count
Source
810
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
86
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
86
        check_quantile(quantile);
813
86
        levels.quantiles.push_back(quantile);
814
86
        levels.permutation.push_back(0);
815
86
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE17_set_single_levelEd
Line
Count
Source
810
32
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
32
        check_quantile(quantile);
813
32
        levels.quantiles.push_back(quantile);
814
32
        levels.permutation.push_back(0);
815
32
    }
_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
361
    void _set_single_level(double quantile) {
811
        DCHECK(levels.empty());
812
361
        check_quantile(quantile);
813
361
        levels.quantiles.push_back(quantile);
814
361
        levels.permutation.push_back(0);
815
361
    }
816
817
    void _set_many_levels(const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
818
542
                          size_t start, int64_t arg_size) {
819
542
        DCHECK(levels.empty());
820
542
        size_t size = cast_set<size_t>(arg_size);
821
542
        levels.quantiles.resize(size);
822
542
        levels.permutation.resize(size);
823
1.52k
        for (size_t i = 0; i < size; ++i) {
824
986
            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
985
            check_quantile(quantiles_data[start + i]);
829
985
            levels.quantiles[i] = quantiles_data[start + i];
830
985
            levels.permutation[i] = i;
831
985
        }
832
542
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
12
                          size_t start, int64_t arg_size) {
819
12
        DCHECK(levels.empty());
820
12
        size_t size = cast_set<size_t>(arg_size);
821
12
        levels.quantiles.resize(size);
822
12
        levels.permutation.resize(size);
823
46
        for (size_t i = 0; i < size; ++i) {
824
34
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
34
            check_quantile(quantiles_data[start + i]);
829
34
            levels.quantiles[i] = quantiles_data[start + i];
830
34
            levels.permutation[i] = i;
831
34
        }
832
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
16
                          size_t start, int64_t arg_size) {
819
16
        DCHECK(levels.empty());
820
16
        size_t size = cast_set<size_t>(arg_size);
821
16
        levels.quantiles.resize(size);
822
16
        levels.permutation.resize(size);
823
61
        for (size_t i = 0; i < size; ++i) {
824
45
            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
45
            check_quantile(quantiles_data[start + i]);
829
45
            levels.quantiles[i] = quantiles_data[start + i];
830
45
            levels.permutation[i] = i;
831
45
        }
832
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
233
                          size_t start, int64_t arg_size) {
819
233
        DCHECK(levels.empty());
820
233
        size_t size = cast_set<size_t>(arg_size);
821
233
        levels.quantiles.resize(size);
822
233
        levels.permutation.resize(size);
823
744
        for (size_t i = 0; i < size; ++i) {
824
511
            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
511
            check_quantile(quantiles_data[start + i]);
829
511
            levels.quantiles[i] = quantiles_data[start + i];
830
511
            levels.permutation[i] = i;
831
511
        }
832
233
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
16
                          size_t start, int64_t arg_size) {
819
16
        DCHECK(levels.empty());
820
16
        size_t size = cast_set<size_t>(arg_size);
821
16
        levels.quantiles.resize(size);
822
16
        levels.permutation.resize(size);
823
59
        for (size_t i = 0; i < size; ++i) {
824
44
            if (null_maps[start + i]) {
825
1
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
1
                                "quantiles in func percentile_array should not have null");
827
1
            }
828
43
            check_quantile(quantiles_data[start + i]);
829
43
            levels.quantiles[i] = quantiles_data[start + i];
830
43
            levels.permutation[i] = i;
831
43
        }
832
16
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
12
                          size_t start, int64_t arg_size) {
819
12
        DCHECK(levels.empty());
820
12
        size_t size = cast_set<size_t>(arg_size);
821
12
        levels.quantiles.resize(size);
822
12
        levels.permutation.resize(size);
823
46
        for (size_t i = 0; i < size; ++i) {
824
34
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
34
            check_quantile(quantiles_data[start + i]);
829
34
            levels.quantiles[i] = quantiles_data[start + i];
830
34
            levels.permutation[i] = i;
831
34
        }
832
12
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
2
                          size_t start, int64_t arg_size) {
819
2
        DCHECK(levels.empty());
820
2
        size_t size = cast_set<size_t>(arg_size);
821
2
        levels.quantiles.resize(size);
822
2
        levels.permutation.resize(size);
823
6
        for (size_t i = 0; i < size; ++i) {
824
4
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
4
            check_quantile(quantiles_data[start + i]);
829
4
            levels.quantiles[i] = quantiles_data[start + i];
830
4
            levels.permutation[i] = i;
831
4
        }
832
2
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Line
Count
Source
818
251
                          size_t start, int64_t arg_size) {
819
251
        DCHECK(levels.empty());
820
251
        size_t size = cast_set<size_t>(arg_size);
821
251
        levels.quantiles.resize(size);
822
251
        levels.permutation.resize(size);
823
565
        for (size_t i = 0; i < size; ++i) {
824
314
            if (null_maps[start + i]) {
825
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
826
0
                                "quantiles in func percentile_array should not have null");
827
0
            }
828
314
            check_quantile(quantiles_data[start + i]);
829
314
            levels.quantiles[i] = quantiles_data[start + i];
830
314
            levels.permutation[i] = i;
831
314
        }
832
251
    }
833
834
2.52k
    void _append(const ValueType* data, size_t count) {
835
2.52k
        if (count == 0) {
836
72
            return;
837
72
        }
838
2.45k
        values.reserve(values.size() + count);
839
2.45k
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.81k
            for (size_t i = 0; i < count; ++i) {
841
920
                if (!std::isnan(data[i])) {
842
632
                    values.push_back(data[i]);
843
632
                }
844
920
            }
845
1.56k
        } else {
846
1.56k
            values.insert_assume_reserved(data, data + count);
847
1.56k
        }
848
2.45k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE7_appendEPKam
Line
Count
Source
834
50
    void _append(const ValueType* data, size_t count) {
835
50
        if (count == 0) {
836
0
            return;
837
0
        }
838
50
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
50
        } else {
846
50
            values.insert_assume_reserved(data, data + count);
847
50
        }
848
50
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE7_appendEPKsm
Line
Count
Source
834
349
    void _append(const ValueType* data, size_t count) {
835
349
        if (count == 0) {
836
0
            return;
837
0
        }
838
349
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
349
        } else {
846
349
            values.insert_assume_reserved(data, data + count);
847
349
        }
848
349
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE7_appendEPKim
Line
Count
Source
834
1.00k
    void _append(const ValueType* data, size_t count) {
835
1.00k
        if (count == 0) {
836
0
            return;
837
0
        }
838
1.00k
        values.reserve(values.size() + count);
839
        if constexpr (std::is_floating_point_v<ValueType>) {
840
            for (size_t i = 0; i < count; ++i) {
841
                if (!std::isnan(data[i])) {
842
                    values.push_back(data[i]);
843
                }
844
            }
845
1.00k
        } else {
846
1.00k
            values.insert_assume_reserved(data, data + count);
847
1.00k
        }
848
1.00k
    }
_ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE7_appendEPKlm
Line
Count
Source
834
136
    void _append(const ValueType* data, size_t count) {
835
136
        if (count == 0) {
836
0
            return;
837
0
        }
838
136
        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
136
        } else {
846
136
            values.insert_assume_reserved(data, data + count);
847
136
        }
848
136
    }
_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
948
    void _append(const ValueType* data, size_t count) {
835
948
        if (count == 0) {
836
72
            return;
837
72
        }
838
876
        values.reserve(values.size() + count);
839
876
        if constexpr (std::is_floating_point_v<ValueType>) {
840
1.77k
            for (size_t i = 0; i < count; ++i) {
841
903
                if (!std::isnan(data[i])) {
842
616
                    values.push_back(data[i]);
843
616
                }
844
903
            }
845
        } else {
846
            values.insert_assume_reserved(data, data + count);
847
        }
848
876
    }
849
850
446
    double _get_result(double quantile) const {
851
446
        if (values.size() == 1) {
852
173
            return static_cast<double>(values.front());
853
173
        }
854
855
273
        double u = static_cast<double>(values.size() - 1) * quantile;
856
273
        auto index = static_cast<size_t>(u);
857
858
273
        if (index + 1 >= values.size()) {
859
12
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
12
        }
861
862
261
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
261
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
261
        return static_cast<double>(values[index]) +
866
261
               (u - static_cast<double>(index)) *
867
261
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
273
    }
_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
60
    double _get_result(double quantile) const {
851
60
        if (values.size() == 1) {
852
21
            return static_cast<double>(values.front());
853
21
        }
854
855
39
        double u = static_cast<double>(values.size() - 1) * quantile;
856
39
        auto index = static_cast<size_t>(u);
857
858
39
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
39
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
39
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
39
        return static_cast<double>(values[index]) +
866
39
               (u - static_cast<double>(index)) *
867
39
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
39
    }
_ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE11_get_resultEd
Line
Count
Source
850
19
    double _get_result(double quantile) const {
851
19
        if (values.size() == 1) {
852
10
            return static_cast<double>(values.front());
853
10
        }
854
855
9
        double u = static_cast<double>(values.size() - 1) * quantile;
856
9
        auto index = static_cast<size_t>(u);
857
858
9
        if (index + 1 >= values.size()) {
859
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
860
0
        }
861
862
9
        std::nth_element(values.begin(), values.begin() + index, values.end());
863
9
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
864
865
9
        return static_cast<double>(values[index]) +
866
9
               (u - static_cast<double>(index)) *
867
9
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
868
9
    }
_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
306
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
38
    AggregateFunctionPercentile(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
883
267
    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
42
    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
42
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
886
887
106
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE15get_return_typeEv
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
887
28
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
887
50
    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
106
             Arena&) const override {
891
106
        const auto& sources =
892
106
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
106
        const auto& quantile =
894
106
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
106
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
106
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
106
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
44
             Arena&) const override {
891
44
        const auto& sources =
892
44
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
893
44
        const auto& quantile =
894
44
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
895
44
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
896
44
                                                     quantile.get_data(), NullMap(1, 0), 1);
897
44
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
890
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
36
    void check_input_columns_type(const IColumn** columns) const override {
911
36
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
36
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
36
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
22
    void check_input_columns_type(const IColumn** columns) const override {
911
22
        this->template check_argument_column_type<ColVecType>(columns[0]);
912
22
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
913
22
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
910
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
24
    void reset(AggregateDataPtr __restrict place) const override {
916
24
        AggregateFunctionPercentile::data(place).reset();
917
24
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5resetEPc
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5resetEPc
Line
Count
Source
915
22
    void reset(AggregateDataPtr __restrict place) const override {
916
22
        AggregateFunctionPercentile::data(place).reset();
917
22
    }
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
197
               Arena&) const override {
921
197
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
197
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
59
               Arena&) const override {
921
59
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
59
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
920
108
               Arena&) const override {
921
108
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
922
108
    }
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
120
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
120
        AggregateFunctionPercentile::data(place).write(buf);
926
120
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
52
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
52
        AggregateFunctionPercentile::data(place).write(buf);
926
52
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
924
54
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
925
54
        AggregateFunctionPercentile::data(place).write(buf);
926
54
    }
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
178
                     Arena&) const override {
930
178
        AggregateFunctionPercentile::data(place).read(buf);
931
178
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
52
                     Arena&) const override {
930
52
        AggregateFunctionPercentile::data(place).read(buf);
931
52
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
108
                     Arena&) const override {
930
108
        AggregateFunctionPercentile::data(place).read(buf);
931
108
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
929
18
                     Arena&) const override {
930
18
        AggregateFunctionPercentile::data(place).read(buf);
931
18
    }
932
933
58
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
58
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
58
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
58
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
6
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
6
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
6
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
6
    }
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
24
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
24
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
24
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
24
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
933
28
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
934
28
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
935
28
        col.insert_value(AggregateFunctionPercentile::data(place).get());
936
28
    }
937
};
938
939
template <PrimitiveType T>
940
class AggregateFunctionPercentileArray final
941
        : public IAggregateFunctionDataHelper<PercentileState<T>,
942
                                              AggregateFunctionPercentileArray<T>>,
943
          MultiExpression,
944
          NotNullableAggregateFunction {
945
public:
946
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
947
    using Base =
948
            IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentileArray<T>>;
949
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
114
    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
37
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
1027
21
    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
137
    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
120
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
Line
Count
Source
1029
1
    String get_name() const override { return "percentile_v2"; }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
1029
2
    String get_name() const override { return "percentile_v2"; }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
Line
Count
Source
1029
10
    String get_name() const override { return "percentile_v2"; }
1030
1031
1.24k
    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
502
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1031
179
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1031
94
    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
369
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
1032
1033
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
1034
1.11k
             Arena&) const override {
1035
1.11k
        const auto& sources =
1036
1.11k
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
1.11k
        const auto& quantile =
1038
1.11k
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
1.11k
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
1.11k
                                                                    quantile.get_data()[0]);
1041
1.11k
    }
_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
256
             Arena&) const override {
1035
256
        const auto& sources =
1036
256
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
256
        const auto& quantile =
1038
256
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
256
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
256
                                                                    quantile.get_data()[0]);
1041
256
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1034
71
             Arena&) const override {
1035
71
        const auto& sources =
1036
71
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1037
71
        const auto& quantile =
1038
71
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1039
71
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
1040
71
                                                                    quantile.get_data()[0]);
1041
71
    }
_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
343
    void check_input_columns_type(const IColumn** columns) const override {
1067
343
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
343
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
343
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
30
    void check_input_columns_type(const IColumn** columns) const override {
1067
30
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
30
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
30
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
182
    void check_input_columns_type(const IColumn** columns) const override {
1067
182
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
182
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
182
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
74
    void check_input_columns_type(const IColumn** columns) const override {
1067
74
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
74
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
74
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1066
21
    void check_input_columns_type(const IColumn** columns) const override {
1067
21
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
21
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
21
    }
_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
31
    void check_input_columns_type(const IColumn** columns) const override {
1067
31
        this->template check_argument_column_type<ColVecType>(columns[0]);
1068
31
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
1069
31
    }
1070
1071
122
    void reset(AggregateDataPtr __restrict place) const override {
1072
122
        AggregateFunctionPercentileV2::data(place).reset();
1073
122
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5resetEPc
Line
Count
Source
1071
102
    void reset(AggregateDataPtr __restrict place) const override {
1072
102
        AggregateFunctionPercentileV2::data(place).reset();
1073
102
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5resetEPc
Line
Count
Source
1071
9
    void reset(AggregateDataPtr __restrict place) const override {
1072
9
        AggregateFunctionPercentileV2::data(place).reset();
1073
9
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
1071
11
    void reset(AggregateDataPtr __restrict place) const override {
1072
11
        AggregateFunctionPercentileV2::data(place).reset();
1073
11
    }
1074
1075
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
1076
271
               Arena&) const override {
1077
271
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
271
    }
_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
53
               Arena&) const override {
1077
53
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
53
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
1076
31
               Arena&) const override {
1077
31
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
1078
31
    }
_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
172
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
172
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
172
    }
_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
51
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
51
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
51
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
1080
31
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1081
31
        AggregateFunctionPercentileV2::data(place).write(buf);
1082
31
    }
_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
176
                     Arena&) const override {
1086
176
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
176
    }
_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
51
                     Arena&) const override {
1086
51
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
51
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
1085
31
                     Arena&) const override {
1086
31
        AggregateFunctionPercentileV2::data(place).read(buf);
1087
31
    }
_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
580
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
580
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
580
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
580
    }
_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
60
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
60
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
60
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
60
    }
_ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1089
20
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1090
20
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
1091
20
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
1092
20
    }
_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
103
    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
45
    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
24
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
1106
1107
10
    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
9
    String get_name() const override { return "percentile_array_v2"; }
1108
1109
677
    DataTypePtr get_return_type() const override {
1110
677
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
677
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Line
Count
Source
1109
31
    DataTypePtr get_return_type() const override {
1110
31
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
31
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Line
Count
Source
1109
37
    DataTypePtr get_return_type() const override {
1110
37
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
37
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Line
Count
Source
1109
266
    DataTypePtr get_return_type() const override {
1110
266
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
266
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Line
Count
Source
1109
46
    DataTypePtr get_return_type() const override {
1110
46
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
46
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Line
Count
Source
1109
31
    DataTypePtr get_return_type() const override {
1110
31
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
31
    }
_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
255
    DataTypePtr get_return_type() const override {
1110
255
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
1111
255
    }
1112
1113
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
1114
892
             Arena&) const override {
1115
892
        const auto& sources =
1116
892
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
892
        const auto& quantile_array =
1118
892
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
892
        const auto& offset_column_data = quantile_array.get_offsets();
1120
892
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
892
                                        quantile_array.get_data())
1122
892
                                        .get_null_map_data();
1123
892
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
892
                                            quantile_array.get_data())
1125
892
                                            .get_nested_column();
1126
892
        const auto& nested_column_data =
1127
892
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
892
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
892
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
892
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
892
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
892
    }
_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
480
             Arena&) const override {
1115
480
        const auto& sources =
1116
480
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
480
        const auto& quantile_array =
1118
480
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
480
        const auto& offset_column_data = quantile_array.get_offsets();
1120
480
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
480
                                        quantile_array.get_data())
1122
480
                                        .get_null_map_data();
1123
480
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
480
                                            quantile_array.get_data())
1125
480
                                            .get_nested_column();
1126
480
        const auto& nested_column_data =
1127
480
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
480
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
480
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
480
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
480
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
480
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
33
             Arena&) const override {
1115
33
        const auto& sources =
1116
33
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
33
        const auto& quantile_array =
1118
33
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
33
        const auto& offset_column_data = quantile_array.get_offsets();
1120
33
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
33
                                        quantile_array.get_data())
1122
33
                                        .get_null_map_data();
1123
33
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
33
                                            quantile_array.get_data())
1125
33
                                            .get_nested_column();
1126
33
        const auto& nested_column_data =
1127
33
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
33
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
33
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
33
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
33
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
33
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
15
             Arena&) const override {
1115
15
        const auto& sources =
1116
15
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
15
        const auto& quantile_array =
1118
15
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
15
        const auto& offset_column_data = quantile_array.get_offsets();
1120
15
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
15
                                        quantile_array.get_data())
1122
15
                                        .get_null_map_data();
1123
15
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
15
                                            quantile_array.get_data())
1125
15
                                            .get_nested_column();
1126
15
        const auto& nested_column_data =
1127
15
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
15
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
15
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
15
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
15
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
15
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
3
             Arena&) const override {
1115
3
        const auto& sources =
1116
3
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
3
        const auto& quantile_array =
1118
3
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
3
        const auto& offset_column_data = quantile_array.get_offsets();
1120
3
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
3
                                        quantile_array.get_data())
1122
3
                                        .get_null_map_data();
1123
3
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
3
                                            quantile_array.get_data())
1125
3
                                            .get_nested_column();
1126
3
        const auto& nested_column_data =
1127
3
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
3
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
3
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
3
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
3
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
3
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
1114
316
             Arena&) const override {
1115
316
        const auto& sources =
1116
316
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1117
316
        const auto& quantile_array =
1118
316
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1119
316
        const auto& offset_column_data = quantile_array.get_offsets();
1120
316
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1121
316
                                        quantile_array.get_data())
1122
316
                                        .get_null_map_data();
1123
316
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1124
316
                                            quantile_array.get_data())
1125
316
                                            .get_nested_column();
1126
316
        const auto& nested_column_data =
1127
316
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1128
316
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
1129
316
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1130
316
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
1131
316
                cast_set<int64_t>(offset_column_data[row_num] - start));
1132
316
    }
1133
1134
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
1135
1
                                Arena&) const override {
1136
1
        const auto& sources =
1137
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1138
1
        const auto& quantile_array =
1139
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1140
1
        const auto& offset_column_data = quantile_array.get_offsets();
1141
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1142
1
                                        quantile_array.get_data())
1143
1
                                        .get_null_map_data();
1144
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1145
1
                                            quantile_array.get_data())
1146
1
                                            .get_nested_column();
1147
1
        const auto& nested_column_data =
1148
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1149
1
        DCHECK_EQ(sources.get_data().size(), batch_size);
1150
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1151
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
1152
1
                cast_set<int64_t>(offset_column_data[0]));
1153
1
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Line
Count
Source
1135
1
                                Arena&) const override {
1136
1
        const auto& sources =
1137
1
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1138
1
        const auto& quantile_array =
1139
1
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1140
1
        const auto& offset_column_data = quantile_array.get_offsets();
1141
1
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1142
1
                                        quantile_array.get_data())
1143
1
                                        .get_null_map_data();
1144
1
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1145
1
                                            quantile_array.get_data())
1146
1
                                            .get_nested_column();
1147
1
        const auto& nested_column_data =
1148
1
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1149
        DCHECK_EQ(sources.get_data().size(), batch_size);
1150
1
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1151
1
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
1152
1
                cast_set<int64_t>(offset_column_data[0]));
1153
1
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
1154
1155
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
1156
0
                         const IColumn** columns, Arena&, bool has_null) override {
1157
0
        const auto& sources =
1158
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
1159
0
        const auto& quantile_array =
1160
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
1161
0
        const auto& offset_column_data = quantile_array.get_offsets();
1162
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1163
0
                                        quantile_array.get_data())
1164
0
                                        .get_null_map_data();
1165
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
1166
0
                                            quantile_array.get_data())
1167
0
                                            .get_nested_column();
1168
0
        const auto& nested_column_data =
1169
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
1170
0
        DCHECK(!has_null);
1171
0
        size_t start = batch_begin == 0 ? 0 : offset_column_data[batch_begin - 1];
1172
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
1173
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
1174
0
                nested_column_data.get_data(), null_maps, start,
1175
0
                cast_set<int64_t>(offset_column_data[batch_begin] - start));
1176
0
    }
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE15add_batch_rangeEmmPcPPKNS_7IColumnERNS_5ArenaEb
1177
1178
196
    void check_input_columns_type(const IColumn** columns) const override {
1179
196
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
196
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
196
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
8
    void check_input_columns_type(const IColumn** columns) const override {
1179
8
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
8
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
8
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE24check_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_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
129
    void check_input_columns_type(const IColumn** columns) const override {
1179
129
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
129
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
129
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
12
    void check_input_columns_type(const IColumn** columns) const override {
1179
12
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
12
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
8
    void check_input_columns_type(const IColumn** columns) const override {
1179
8
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
8
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
8
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
2
    void check_input_columns_type(const IColumn** columns) const override {
1179
2
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
2
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
Line
Count
Source
1178
24
    void check_input_columns_type(const IColumn** columns) const override {
1179
24
        this->template check_argument_column_type<ColVecType>(columns[0]);
1180
24
        check_percentile_array_column_type(*this, *columns[1], 1);
1181
24
    }
1182
1183
10
    void reset(AggregateDataPtr __restrict place) const override {
1184
10
        AggregateFunctionPercentileArrayV2::data(place).reset();
1185
10
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5resetEPc
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5resetEPc
Line
Count
Source
1183
10
    void reset(AggregateDataPtr __restrict place) const override {
1184
10
        AggregateFunctionPercentileArrayV2::data(place).reset();
1185
10
    }
1186
1187
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
1188
404
               Arena&) const override {
1189
404
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
404
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
404
    }
_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
220
               Arena&) const override {
1189
220
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
220
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
220
    }
_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
168
               Arena&) const override {
1189
168
        AggregateFunctionPercentileArrayV2::data(place).merge(
1190
168
                AggregateFunctionPercentileArrayV2::data(rhs));
1191
168
    }
1192
1193
333
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
333
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
333
    }
_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
218
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
218
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
218
    }
_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
1
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
1
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
1
    }
_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
100
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
1194
100
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
1195
100
    }
1196
1197
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
1198
342
                     Arena&) const override {
1199
342
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
342
    }
_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
218
                     Arena&) const override {
1199
218
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
218
    }
_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
108
                     Arena&) const override {
1199
108
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1200
108
    }
1201
1202
410
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
410
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
410
        auto& to_nested_col = to_arr.get_data();
1205
410
        if (is_column_nullable(to_nested_col)) {
1206
410
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
410
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
410
                    col_null->get_nested_column());
1209
410
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
410
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
410
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
410
    }
_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
162
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
162
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
162
        auto& to_nested_col = to_arr.get_data();
1205
162
        if (is_column_nullable(to_nested_col)) {
1206
162
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
162
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
162
                    col_null->get_nested_column());
1209
162
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
162
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
162
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
162
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
13
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
13
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
13
        auto& to_nested_col = to_arr.get_data();
1205
13
        if (is_column_nullable(to_nested_col)) {
1206
13
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
13
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
13
                    col_null->get_nested_column());
1209
13
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
13
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
13
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
13
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
12
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
12
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
12
        auto& to_nested_col = to_arr.get_data();
1205
12
        if (is_column_nullable(to_nested_col)) {
1206
12
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
12
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
12
                    col_null->get_nested_column());
1209
12
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
12
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
12
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
12
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
2
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
2
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
2
        auto& to_nested_col = to_arr.get_data();
1205
2
        if (is_column_nullable(to_nested_col)) {
1206
2
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
2
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
2
                    col_null->get_nested_column());
1209
2
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
2
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
2
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
2
    }
_ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
1202
196
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1203
196
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1204
196
        auto& to_nested_col = to_arr.get_data();
1205
196
        if (is_column_nullable(to_nested_col)) {
1206
196
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1207
196
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1208
196
                    col_null->get_nested_column());
1209
196
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1210
196
        } else {
1211
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1212
0
        }
1213
196
        to_arr.get_offsets().push_back(to_nested_col.size());
1214
196
    }
1215
};
1216
1217
} // namespace doris