Coverage Report

Created: 2026-07-07 16:13

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/aggregate/aggregate_function_percentile.h
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
18
#pragma once
19
20
#include <glog/logging.h>
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include <boost/iterator/iterator_facade.hpp>
25
#include <cmath>
26
#include <cstdint>
27
#include <memory>
28
#include <string>
29
#include <vector>
30
31
#include "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
0
                                               const IColumn& column, size_t index) {
53
0
    const auto* array_column = check_and_get_column<ColumnArray>(column);
54
0
    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
0
    const auto* nullable_column = check_and_get_column<ColumnNullable>(array_column->get_data());
62
0
    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
0
    if (UNLIKELY(check_and_get_column<ColumnFloat64>(nullable_column->get_nested_column()) ==
70
0
                 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
0
}
77
78
struct PercentileApproxState {
79
    static constexpr double INIT_QUANTILE = -1.0;
80
0
    PercentileApproxState() = default;
81
0
    ~PercentileApproxState() = default;
82
83
0
    void init(double quantile, float compression = 10000) {
84
0
        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
0
            if (compression < 2048 || compression > 10000) {
90
0
                compression = 10000;
91
0
            }
92
0
            digest = TDigest::create_unique(compression);
93
0
            check_quantile(quantile);
94
0
            target_quantile = quantile;
95
0
            compressions = compression;
96
0
            init_flag = true;
97
0
        }
98
0
    }
99
100
0
    void write(BufferWritable& buf) const {
101
0
        buf.write_binary(init_flag);
102
0
        if (!init_flag) {
103
0
            return;
104
0
        }
105
106
0
        buf.write_binary(target_quantile);
107
0
        buf.write_binary(compressions);
108
0
        uint32_t serialize_size = digest->serialized_size();
109
0
        std::string result(serialize_size, '0');
110
0
        DCHECK(digest.get() != nullptr);
111
0
        digest->serialize((uint8_t*)result.c_str());
112
113
0
        buf.write_binary(result);
114
0
    }
115
116
0
    void read(BufferReadable& buf) {
117
0
        buf.read_binary(init_flag);
118
0
        if (!init_flag) {
119
0
            return;
120
0
        }
121
122
0
        buf.read_binary(target_quantile);
123
0
        buf.read_binary(compressions);
124
0
        std::string str;
125
0
        buf.read_binary(str);
126
0
        digest = TDigest::create_unique(compressions);
127
0
        digest->unserialize((uint8_t*)str.c_str());
128
0
    }
129
130
0
    double get() const {
131
0
        if (init_flag) {
132
0
            return digest->quantile(static_cast<float>(target_quantile));
133
0
        } else {
134
0
            return std::nan("");
135
0
        }
136
0
    }
137
138
0
    void merge(const PercentileApproxState& rhs) {
139
0
        if (!rhs.init_flag) {
140
0
            return;
141
0
        }
142
0
        if (init_flag) {
143
0
            DCHECK(digest.get() != nullptr);
144
0
            digest->merge(rhs.digest.get());
145
0
        } else {
146
0
            digest = TDigest::create_unique(compressions);
147
0
            digest->merge(rhs.digest.get());
148
0
            init_flag = true;
149
0
        }
150
0
        if (target_quantile == PercentileApproxState::INIT_QUANTILE) {
151
0
            target_quantile = rhs.target_quantile;
152
0
        }
153
0
    }
154
155
0
    void add(double source) { digest->add(static_cast<float>(source)); }
156
157
0
    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
0
        if (weight <= 0) {
160
0
            return;
161
0
        }
162
0
        digest->add(static_cast<float>(source), static_cast<float>(weight));
163
0
    }
164
165
0
    void reset() {
166
0
        target_quantile = INIT_QUANTILE;
167
0
        init_flag = false;
168
0
        digest = TDigest::create_unique(compressions);
169
0
    }
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
0
            : IAggregateFunctionDataHelper<PercentileApproxState, Derived>(argument_types_) {}
Unexecuted instantiation: _ZN5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
183
184
0
    String get_name() const override { return "percentile_approx"; }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE8get_nameB5cxx11Ev
185
186
0
    void reset(AggregateDataPtr __restrict place) const override { this->data(place).reset(); }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5resetEPc
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5resetEPc
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5resetEPc
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5resetEPc
187
188
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
189
0
               Arena&) const override {
190
0
        this->data(place).merge(this->data(rhs));
191
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
192
193
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
194
0
        this->data(place).write(buf);
195
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
196
197
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
198
0
                     Arena&) const override {
199
0
        this->data(place).read(buf);
200
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
201
202
0
    void check_input_columns_type(const IColumn** columns) const override {
203
0
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
204
0
            this->template check_argument_column_type<ColumnFloat64>(columns[i]);
205
0
        }
206
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE24check_input_columns_typeEPPKNS_7IColumnE
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
0
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
216
0
                      argument_types_) {}
217
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
218
0
             Arena&) const override {
219
0
        const auto& sources =
220
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
221
0
        const auto& quantile =
222
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
223
0
        this->data(place).init(quantile.get_element(0));
224
0
        this->data(place).add(sources.get_element(row_num));
225
0
    }
226
227
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
228
229
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
230
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
231
0
        col.get_data().push_back(this->data(place).get());
232
0
    }
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
0
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxThreeParams>(
243
0
                      argument_types_) {}
244
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
245
0
             Arena&) const override {
246
0
        const auto& sources =
247
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
248
0
        const auto& quantile =
249
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
250
0
        const auto& compression =
251
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
252
253
0
        this->data(place).init(quantile.get_element(0),
254
0
                               static_cast<float>(compression.get_element(0)));
255
0
        this->data(place).add(sources.get_element(row_num));
256
0
    }
257
258
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
259
260
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
261
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
262
0
        col.get_data().push_back(this->data(place).get());
263
0
    }
264
};
265
266
class AggregateFunctionPercentileApproxWeightedThreeParams final
267
        : public AggregateFunctionPercentileApproxBase<
268
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
269
          MultiExpression,
270
          NullableAggregateFunction {
271
public:
272
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
273
0
            : AggregateFunctionPercentileApproxBase<
274
0
                      AggregateFunctionPercentileApproxWeightedThreeParams>(argument_types_) {}
275
276
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
277
0
             Arena&) const override {
278
0
        const auto& sources =
279
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
280
0
        const auto& weight =
281
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
282
0
        const auto& quantile =
283
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
284
285
0
        this->data(place).init(quantile.get_element(0));
286
0
        this->data(place).add_with_weight(sources.get_element(row_num),
287
0
                                          weight.get_element(row_num));
288
0
    }
289
290
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
291
292
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
293
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
294
0
        col.get_data().push_back(this->data(place).get());
295
0
    }
296
};
297
298
class AggregateFunctionPercentileApproxWeightedFourParams final
299
        : public AggregateFunctionPercentileApproxBase<
300
                  AggregateFunctionPercentileApproxWeightedFourParams>,
301
          MultiExpression,
302
          NullableAggregateFunction {
303
public:
304
    AggregateFunctionPercentileApproxWeightedFourParams(const DataTypes& argument_types_)
305
0
            : AggregateFunctionPercentileApproxBase<
306
0
                      AggregateFunctionPercentileApproxWeightedFourParams>(argument_types_) {}
307
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
308
0
             Arena&) const override {
309
0
        const auto& sources =
310
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
311
0
        const auto& weight =
312
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
313
0
        const auto& quantile =
314
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[2]);
315
0
        const auto& compression =
316
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[3]);
317
318
0
        this->data(place).init(quantile.get_element(0),
319
0
                               static_cast<float>(compression.get_element(0)));
320
0
        this->data(place).add_with_weight(sources.get_element(row_num),
321
0
                                          weight.get_element(row_num));
322
0
    }
323
324
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
325
326
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
327
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
328
0
        col.get_data().push_back(this->data(place).get());
329
0
    }
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
0
    void write(BufferWritable& buf) const {
339
0
        buf.write_binary(inited_flag);
340
0
        if (!inited_flag) {
341
0
            return;
342
0
        }
343
0
        int size_num = cast_set<int>(vec_quantile.size());
344
0
        buf.write_binary(size_num);
345
0
        for (const auto& quantile : vec_quantile) {
346
0
            buf.write_binary(quantile);
347
0
        }
348
0
        for (auto& counts : vec_counts) {
349
0
            counts.serialize(buf);
350
0
        }
351
0
    }
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
352
353
0
    void read(BufferReadable& buf) {
354
0
        buf.read_binary(inited_flag);
355
0
        if (!inited_flag) {
356
0
            return;
357
0
        }
358
0
        int size_num = 0;
359
0
        buf.read_binary(size_num);
360
0
        double data = 0.0;
361
0
        vec_quantile.clear();
362
0
        for (int i = 0; i < size_num; ++i) {
363
0
            buf.read_binary(data);
364
0
            vec_quantile.emplace_back(data);
365
0
        }
366
0
        vec_counts.clear();
367
0
        vec_counts.resize(size_num);
368
0
        for (int i = 0; i < size_num; ++i) {
369
0
            vec_counts[i].unserialize(buf);
370
0
        }
371
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
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
0
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_maps, int64_t arg_size) {
375
0
        if (!inited_flag) {
376
0
            vec_counts.resize(arg_size);
377
0
            vec_quantile.resize(arg_size, -1);
378
0
            inited_flag = true;
379
0
            for (int i = 0; i < arg_size; ++i) {
380
                // throw Exception func call percentile_array(id, [1,0,null])
381
0
                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
0
                check_quantile(quantiles[i]);
386
0
                vec_quantile[i] = quantiles[i];
387
0
            }
388
0
        }
389
0
        for (int i = 0; i < arg_size; ++i) {
390
0
            vec_counts[i].increment(source);
391
0
        }
392
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE3addElRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
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
0
    void merge(const PercentileState& rhs) {
407
0
        if (!rhs.inited_flag) {
408
0
            return;
409
0
        }
410
0
        int size_num = cast_set<int>(rhs.vec_quantile.size());
411
0
        if (!inited_flag) {
412
0
            vec_counts.resize(size_num);
413
0
            vec_quantile.resize(size_num, -1);
414
0
            inited_flag = true;
415
0
        }
416
417
0
        for (int i = 0; i < size_num; ++i) {
418
0
            if (vec_quantile[i] == -1.0) {
419
0
                vec_quantile[i] = rhs.vec_quantile[i];
420
0
            }
421
0
            vec_counts[i].merge(&(rhs.vec_counts[i]));
422
0
        }
423
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
424
425
0
    void reset() {
426
0
        vec_counts.clear();
427
0
        vec_quantile.clear();
428
0
        inited_flag = false;
429
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE5resetEv
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE5resetEv
430
431
0
    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
Unexecuted instantiation: _ZNK5doris15PercentileStateILNS_13PrimitiveTypeE6EE3getEv
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
0
    void add_single_range(const ValueType* data, size_t count, double quantile) {
448
0
        if (!inited_flag) {
449
0
            _set_single_level(quantile);
450
0
            inited_flag = true;
451
0
        }
452
0
        _append(data, count);
453
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16add_single_rangeEPKamd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16add_single_rangeEPKsmd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16add_single_rangeEPKimd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16add_single_rangeEPKlmd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16add_single_rangeEPKnmd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16add_single_rangeEPKfmd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16add_single_rangeEPKdmd
454
455
    void add_many_range(const ValueType* data, size_t count,
456
                        const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
457
0
                        size_t start, int64_t arg_size) {
458
0
        if (!inited_flag) {
459
0
            _set_many_levels(quantiles_data, null_maps, start, arg_size);
460
0
            inited_flag = true;
461
0
        }
462
0
        if (levels.empty()) {
463
0
            return;
464
0
        }
465
0
        _append(data, count);
466
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE14add_many_rangeEPKsmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE14add_many_rangeEPKimRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE14add_many_rangeEPKlmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE14add_many_rangeEPKnmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE14add_many_rangeEPKfmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE14add_many_rangeEPKdmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEml
467
468
0
    void write(BufferWritable& buf) const {
469
0
        buf.write_binary(inited_flag);
470
0
        if (!inited_flag) {
471
0
            return;
472
0
        }
473
474
0
        levels.write(buf);
475
0
        size_t size = values.size();
476
0
        buf.write_binary(size);
477
0
        if (size > 0) {
478
0
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
479
0
        }
480
0
    }
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5writeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5writeERNS_14BufferWritableE
481
482
0
    void read(BufferReadable& buf) {
483
0
        reset();
484
0
        buf.read_binary(inited_flag);
485
0
        if (!inited_flag) {
486
0
            return;
487
0
        }
488
489
0
        levels.read(buf);
490
0
        size_t size = 0;
491
0
        buf.read_binary(size);
492
0
        values.resize(size);
493
0
        if (size > 0) {
494
0
            auto raw = buf.read(sizeof(ValueType) * size);
495
0
            memcpy(values.data(), raw.data, raw.size);
496
0
        }
497
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE4readERNS_14BufferReadableE
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE4readERNS_14BufferReadableE
498
499
0
    void merge(const PercentileExactState& rhs) {
500
0
        if (!rhs.inited_flag) {
501
0
            return;
502
0
        }
503
504
0
        if (!inited_flag) {
505
0
            levels = rhs.levels;
506
0
            inited_flag = true;
507
0
        } else {
508
0
            levels.merge(rhs.levels);
509
0
        }
510
0
        _append(rhs.values.data(), rhs.values.size());
511
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5mergeERKS2_
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5mergeERKS2_
512
513
0
    void reset() {
514
0
        values.clear();
515
0
        levels.clear();
516
0
        inited_flag = false;
517
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE5resetEv
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE5resetEv
518
519
0
    double get() const {
520
0
        if (!inited_flag || levels.empty() || values.empty()) {
521
0
            return std::numeric_limits<double>::quiet_NaN();
522
0
        }
523
524
0
        DCHECK_EQ(levels.quantiles.size(), 1);
525
0
        return _get_result(levels.quantiles[0]);
526
0
    }
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE3getEv
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE3getEv
527
528
0
    void insert_result_into(IColumn& to) const {
529
0
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
530
0
        if (!inited_flag || levels.empty()) {
531
0
            return;
532
0
        }
533
534
0
        size_t old_size = column_data.size();
535
0
        size_t size = levels.quantiles.size();
536
0
        column_data.resize(old_size + size);
537
0
        auto* result = column_data.data() + old_size;
538
539
0
        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
0
        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
0
        size_t prev_index = 0;
554
0
        const auto& quantiles = levels.quantiles;
555
0
        const auto& permutation = levels.get_permutation();
556
0
        for (size_t i = 0; i < size; ++i) {
557
0
            auto level_index = permutation[i];
558
0
            auto level = quantiles[level_index];
559
0
            double u = static_cast<double>(values.size() - 1) * level;
560
0
            auto index = static_cast<size_t>(u);
561
562
0
            if (index + 1 >= values.size()) {
563
0
                result[level_index] =
564
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
565
0
            } else {
566
0
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
567
0
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
568
0
                result[level_index] =
569
0
                        static_cast<double>(values[index]) +
570
0
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
571
0
                                                            static_cast<double>(values[index]));
572
0
                prev_index = index;
573
0
            }
574
0
        }
575
0
    }
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE18insert_result_intoERNS_7IColumnE
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE18insert_result_intoERNS_7IColumnE
576
577
private:
578
0
    void _set_single_level(double quantile) {
579
0
        DCHECK(levels.empty());
580
0
        check_quantile(quantile);
581
0
        levels.quantiles.push_back(quantile);
582
0
        levels.permutation.push_back(0);
583
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE17_set_single_levelEd
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE17_set_single_levelEd
584
585
    void _set_many_levels(const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_maps,
586
0
                          size_t start, int64_t arg_size) {
587
0
        DCHECK(levels.empty());
588
0
        size_t size = cast_set<size_t>(arg_size);
589
0
        levels.quantiles.resize(size);
590
0
        levels.permutation.resize(size);
591
0
        for (size_t i = 0; i < size; ++i) {
592
0
            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
0
            check_quantile(quantiles_data[start + i]);
597
0
            levels.quantiles[i] = quantiles_data[start + i];
598
0
            levels.permutation[i] = i;
599
0
        }
600
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEml
601
602
0
    void _append(const ValueType* data, size_t count) {
603
0
        if (count == 0) {
604
0
            return;
605
0
        }
606
0
        values.reserve(values.size() + count);
607
0
        if constexpr (std::is_floating_point_v<ValueType>) {
608
0
            for (size_t i = 0; i < count; ++i) {
609
0
                if (!std::isnan(data[i])) {
610
0
                    values.push_back(data[i]);
611
0
                }
612
0
            }
613
0
        } else {
614
0
            values.insert_assume_reserved(data, data + count);
615
0
        }
616
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE7_appendEPKam
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE7_appendEPKsm
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE7_appendEPKim
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE7_appendEPKlm
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE7_appendEPKnm
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE7_appendEPKfm
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE7_appendEPKdm
617
618
0
    double _get_result(double quantile) const {
619
0
        if (values.size() == 1) {
620
0
            return static_cast<double>(values.front());
621
0
        }
622
623
0
        double u = static_cast<double>(values.size() - 1) * quantile;
624
0
        auto index = static_cast<size_t>(u);
625
626
0
        if (index + 1 >= values.size()) {
627
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
628
0
        }
629
630
0
        std::nth_element(values.begin(), values.begin() + index, values.end());
631
0
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
632
633
0
        return static_cast<double>(values[index]) +
634
0
               (u - static_cast<double>(index)) *
635
0
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
636
0
    }
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE11_get_resultEd
Unexecuted instantiation: _ZNK5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE11_get_resultEd
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
2
    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
2
    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
2
    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
2
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
654
655
0
    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
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE15get_return_typeEv
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
0
             Arena&) const override {
659
0
        const auto& sources =
660
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
661
0
        const auto& quantile =
662
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
663
0
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
664
0
                                                     quantile.get_data(), NullMap(1, 0), 1);
665
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
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
0
    void check_input_columns_type(const IColumn** columns) const override {
679
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
680
0
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
681
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
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
0
    void reset(AggregateDataPtr __restrict place) const override {
684
0
        AggregateFunctionPercentile::data(place).reset();
685
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5resetEPc
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5resetEPc
686
687
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
688
0
               Arena&) const override {
689
0
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
690
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
691
692
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
693
0
        AggregateFunctionPercentile::data(place).write(buf);
694
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
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
0
                     Arena&) const override {
698
0
        AggregateFunctionPercentile::data(place).read(buf);
699
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
700
701
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
702
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
703
0
        col.insert_value(AggregateFunctionPercentile::data(place).get());
704
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
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
1
    AggregateFunctionPercentileArray(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
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
1
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE8get_nameB5cxx11Ev
Line
Count
Source
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
0
             Arena&) const override {
727
0
        const auto& sources =
728
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
729
0
        const auto& quantile_array =
730
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
731
0
        const auto& offset_column_data = quantile_array.get_offsets();
732
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
733
0
                                        quantile_array.get_data())
734
0
                                        .get_null_map_data();
735
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
736
0
                                            quantile_array.get_data())
737
0
                                            .get_nested_column();
738
0
        const auto& nested_column_data =
739
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
740
741
0
        AggregateFunctionPercentileArray::data(place).add(
742
0
                sources.get_element(row_num), nested_column_data.get_data(), null_maps,
743
0
                offset_column_data.data()[row_num] - offset_column_data[(ssize_t)row_num - 1]);
744
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
745
746
0
    void check_input_columns_type(const IColumn** columns) const override {
747
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
748
0
        check_percentile_array_column_type(*this, *columns[1], 1);
749
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
750
751
0
    void reset(AggregateDataPtr __restrict place) const override {
752
0
        AggregateFunctionPercentileArray::data(place).reset();
753
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5resetEPc
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
0
               Arena&) const override {
757
0
        AggregateFunctionPercentileArray::data(place).merge(
758
0
                AggregateFunctionPercentileArray::data(rhs));
759
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
760
761
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
762
0
        AggregateFunctionPercentileArray::data(place).write(buf);
763
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
764
765
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
766
0
                     Arena&) const override {
767
0
        AggregateFunctionPercentileArray::data(place).read(buf);
768
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
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
2
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
795
2
    AggregateFunctionPercentileV2(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
796
797
2
    String get_name() const override { return "percentile_v2"; }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE8get_nameB5cxx11Ev
_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
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
798
799
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
800
801
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
802
0
             Arena&) const override {
803
0
        const auto& sources =
804
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
805
0
        const auto& quantile =
806
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
807
0
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
808
0
                                                                    quantile.get_data()[0]);
809
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
810
811
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
812
0
                                Arena&) const override {
813
0
        const auto& sources =
814
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
815
0
        const auto& quantile =
816
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
817
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
818
0
        AggregateFunctionPercentileV2::data(place).add_single_range(
819
0
                sources.get_data().data(), batch_size, quantile.get_data()[0]);
820
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
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
0
    void check_input_columns_type(const IColumn** columns) const override {
835
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
836
0
        this->template check_argument_column_type<ColumnFloat64>(columns[1]);
837
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
838
839
0
    void reset(AggregateDataPtr __restrict place) const override {
840
0
        AggregateFunctionPercentileV2::data(place).reset();
841
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5resetEPc
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5resetEPc
842
843
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
844
0
               Arena&) const override {
845
0
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
846
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
847
848
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
849
0
        AggregateFunctionPercentileV2::data(place).write(buf);
850
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
851
852
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
853
0
                     Arena&) const override {
854
0
        AggregateFunctionPercentileV2::data(place).read(buf);
855
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
856
857
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
858
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
859
0
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
860
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
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
1
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
873
1
    AggregateFunctionPercentileArrayV2(const DataTypes& argument_types_) : Base(argument_types_) {}
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZN5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EEC2ERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
874
875
1
    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
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
876
877
0
    DataTypePtr get_return_type() const override {
878
0
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
879
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE15get_return_typeEv
880
881
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
882
0
             Arena&) const override {
883
0
        const auto& sources =
884
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
885
0
        const auto& quantile_array =
886
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
887
0
        const auto& offset_column_data = quantile_array.get_offsets();
888
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
889
0
                                        quantile_array.get_data())
890
0
                                        .get_null_map_data();
891
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
892
0
                                            quantile_array.get_data())
893
0
                                            .get_nested_column();
894
0
        const auto& nested_column_data =
895
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
896
0
        size_t start = row_num == 0 ? 0 : offset_column_data[row_num - 1];
897
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
898
0
                &sources.get_data()[row_num], 1, nested_column_data.get_data(), null_maps, start,
899
0
                cast_set<int64_t>(offset_column_data[row_num] - start));
900
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
901
902
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
903
0
                                Arena&) const override {
904
0
        const auto& sources =
905
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
906
0
        const auto& quantile_array =
907
0
                assert_cast<const ColumnArray&, TypeCheckOnRelease::DISABLE>(*columns[1]);
908
0
        const auto& offset_column_data = quantile_array.get_offsets();
909
0
        const auto& null_maps = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
910
0
                                        quantile_array.get_data())
911
0
                                        .get_null_map_data();
912
0
        const auto& nested_column = assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
913
0
                                            quantile_array.get_data())
914
0
                                            .get_nested_column();
915
0
        const auto& nested_column_data =
916
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(nested_column);
917
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
918
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
919
0
                sources.get_data().data(), batch_size, nested_column_data.get_data(), null_maps, 0,
920
0
                cast_set<int64_t>(offset_column_data[0]));
921
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE22add_batch_single_placeEmPcPPKNS_7IColumnERNS_5ArenaE
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
0
    void check_input_columns_type(const IColumn** columns) const override {
947
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
948
0
        check_percentile_array_column_type(*this, *columns[1], 1);
949
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE24check_input_columns_typeEPPKNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE24check_input_columns_typeEPPKNS_7IColumnE
950
951
0
    void reset(AggregateDataPtr __restrict place) const override {
952
0
        AggregateFunctionPercentileArrayV2::data(place).reset();
953
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5resetEPc
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5resetEPc
954
955
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
956
0
               Arena&) const override {
957
0
        AggregateFunctionPercentileArrayV2::data(place).merge(
958
0
                AggregateFunctionPercentileArrayV2::data(rhs));
959
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE5mergeEPcPKcRNS_5ArenaE
960
961
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
962
0
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
963
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE9serializeEPKcRNS_14BufferWritableE
964
965
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
966
0
                     Arena&) const override {
967
0
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
968
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
969
970
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
971
0
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
972
0
        auto& to_nested_col = to_arr.get_data();
973
0
        if (is_column_nullable(to_nested_col)) {
974
0
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
975
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
976
0
                    col_null->get_nested_column());
977
0
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
978
0
        } else {
979
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
980
0
        }
981
0
        to_arr.get_offsets().push_back(to_nested_col.size());
982
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE18insert_result_intoEPKcRNS_7IColumnE
983
};
984
985
} // namespace doris