Coverage Report

Created: 2026-07-24 17:48

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