Coverage Report

Created: 2026-07-09 05:40

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 <string_view>
30
#include <vector>
31
32
#include "common/exception.h"
33
#include "core/assert_cast.h"
34
#include "core/block/column_with_type_and_name.h"
35
#include "core/block/columns_with_type_and_name.h"
36
#include "core/column/column.h"
37
#include "core/column/column_array.h"
38
#include "core/column/column_const.h"
39
#include "core/column/column_nullable.h"
40
#include "core/column/column_vector.h"
41
#include "core/data_type/data_type_array.h"
42
#include "core/data_type/data_type_nullable.h"
43
#include "core/data_type/data_type_number.h"
44
#include "core/pod_array.h"
45
#include "core/pod_array_fwd.h"
46
#include "core/types.h"
47
#include "exprs/aggregate/aggregate_function.h"
48
#include "exprs/vexpr_context.h"
49
#include "util/percentile_util.h"
50
#include "util/tdigest.h"
51
52
namespace doris {
53
54
class Arena;
55
class BufferReadable;
56
57
inline void check_percentile_array_column_type(const IAggregateFunction& function,
58
0
                                               const IColumn& column, size_t index) {
59
0
    const auto* array_column = check_and_get_column_with_const<ColumnArray>(column);
60
0
    if (UNLIKELY(array_column == nullptr)) {
61
0
        throw doris::Exception(Status::InternalError(
62
0
                "Aggregate function {} argument {} type check failed: Column type {} is not "
63
0
                "ColumnArray",
64
0
                function.get_name(), index, column.get_name()));
65
0
    }
66
67
0
    const auto* nullable_column = check_and_get_column<ColumnNullable>(array_column->get_data());
68
0
    if (UNLIKELY(nullable_column == nullptr)) {
69
0
        throw doris::Exception(Status::InternalError(
70
0
                "Aggregate function {} argument {} type check failed: Array nested column type {} "
71
0
                "is not ColumnNullable",
72
0
                function.get_name(), index, array_column->get_data().get_name()));
73
0
    }
74
75
0
    if (UNLIKELY(check_and_get_column<ColumnFloat64>(nullable_column->get_nested_column()) ==
76
0
                 nullptr)) {
77
0
        throw doris::Exception(Status::InternalError(
78
0
                "Aggregate function {} argument {} type check failed: Array nested data column "
79
0
                "type {} is not ColumnFloat64",
80
0
                function.get_name(), index, nullable_column->get_nested_column().get_name()));
81
0
    }
82
0
}
83
84
struct PercentileApproxState {
85
    static constexpr double INIT_QUANTILE = -1.0;
86
0
    PercentileApproxState() = default;
87
0
    ~PercentileApproxState() = default;
88
89
0
    void init(double quantile, float compression = 10000) {
90
0
        if (!init_flag) {
91
            //https://doris.apache.org/zh-CN/sql-reference/sql-functions/aggregate-functions/percentile_approx.html#description
92
            //The compression parameter setting range is [2048, 10000].
93
            //If the value of compression parameter is not specified set, or is outside the range of [2048, 10000],
94
            //will use the default value of 10000
95
0
            if (compression < 2048 || compression > 10000) {
96
0
                compression = 10000;
97
0
            }
98
0
            digest = TDigest::create_unique(compression);
99
0
            check_quantile(quantile);
100
0
            target_quantile = quantile;
101
0
            compressions = compression;
102
0
            init_flag = true;
103
0
        }
104
0
    }
105
106
0
    void write(BufferWritable& buf) const {
107
0
        buf.write_binary(init_flag);
108
0
        if (!init_flag) {
109
0
            return;
110
0
        }
111
112
0
        buf.write_binary(target_quantile);
113
0
        buf.write_binary(compressions);
114
0
        uint32_t serialize_size = digest->serialized_size();
115
0
        std::string result(serialize_size, '0');
116
0
        DCHECK(digest.get() != nullptr);
117
0
        digest->serialize((uint8_t*)result.c_str());
118
119
0
        buf.write_binary(result);
120
0
    }
121
122
0
    void read(BufferReadable& buf) {
123
0
        buf.read_binary(init_flag);
124
0
        if (!init_flag) {
125
0
            return;
126
0
        }
127
128
0
        buf.read_binary(target_quantile);
129
0
        buf.read_binary(compressions);
130
0
        std::string str;
131
0
        buf.read_binary(str);
132
0
        digest = TDigest::create_unique(compressions);
133
0
        digest->unserialize((uint8_t*)str.c_str());
134
0
    }
135
136
0
    double get() const {
137
0
        if (init_flag) {
138
0
            return digest->quantile(static_cast<float>(target_quantile));
139
0
        } else {
140
0
            return std::nan("");
141
0
        }
142
0
    }
143
144
0
    void merge(const PercentileApproxState& rhs) {
145
0
        if (!rhs.init_flag) {
146
0
            return;
147
0
        }
148
0
        if (init_flag) {
149
0
            DCHECK(digest.get() != nullptr);
150
0
            digest->merge(rhs.digest.get());
151
0
        } else {
152
0
            digest = TDigest::create_unique(compressions);
153
0
            digest->merge(rhs.digest.get());
154
0
            init_flag = true;
155
0
        }
156
0
        if (target_quantile == PercentileApproxState::INIT_QUANTILE) {
157
0
            target_quantile = rhs.target_quantile;
158
0
        }
159
0
    }
160
161
0
    void add(double source) { digest->add(static_cast<float>(source)); }
162
163
0
    void add_with_weight(double source, double weight) {
164
        // the weight should be positive num, as have check the value valid use DCHECK_GT(c._weight, 0);
165
0
        if (weight <= 0) {
166
0
            return;
167
0
        }
168
0
        digest->add(static_cast<float>(source), static_cast<float>(weight));
169
0
    }
170
171
0
    void reset() {
172
0
        target_quantile = INIT_QUANTILE;
173
0
        init_flag = false;
174
0
        digest = TDigest::create_unique(compressions);
175
0
    }
176
177
    bool init_flag = false;
178
    std::unique_ptr<TDigest> digest;
179
    double target_quantile = INIT_QUANTILE;
180
    float compressions = 10000;
181
};
182
183
template <typename Derived>
184
class AggregateFunctionPercentileApproxBase
185
        : public IAggregateFunctionDataHelper<PercentileApproxState, Derived> {
186
public:
187
    AggregateFunctionPercentileApproxBase(const DataTypes& argument_types_)
188
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
189
190
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
191
192
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
193
0
        static const std::vector<size_t> two_params {1};
194
0
        static const std::vector<size_t> three_params {1, 2};
195
0
        return this->argument_types.size() == 3 ? three_params : two_params;
196
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE26get_const_argument_indexesEv
197
198
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
199
200
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
201
0
               Arena&) const override {
202
0
        this->data(place).merge(this->data(rhs));
203
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE5mergeEPcPKcRNS_5ArenaE
204
205
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
206
0
        this->data(place).write(buf);
207
0
    }
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_42AggregateFunctionPercentileApproxTwoParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_44AggregateFunctionPercentileApproxThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_52AggregateFunctionPercentileApproxWeightedThreeParamsEE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris37AggregateFunctionPercentileApproxBaseINS_51AggregateFunctionPercentileApproxWeightedFourParamsEE9serializeEPKcRNS_14BufferWritableE
208
209
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
210
0
                     Arena&) const override {
211
0
        this->data(place).read(buf);
212
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
213
214
0
    void check_input_columns_type(const IColumn** columns) const override {
215
0
        const auto& const_argument_indexes = this->get_const_argument_indexes();
216
0
        size_t const_argument_pos = 0;
217
0
        for (size_t i = 0; i < this->argument_types.size(); ++i) {
218
0
            if (const_argument_pos < const_argument_indexes.size() &&
219
0
                const_argument_indexes[const_argument_pos] == i) {
220
0
                this->template check_const_argument_column_type<ColumnFloat64>(columns[i]);
221
0
                ++const_argument_pos;
222
0
            } else {
223
0
                this->template check_argument_column_type<ColumnFloat64>(columns[i]);
224
0
            }
225
0
        }
226
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
227
};
228
229
class AggregateFunctionPercentileApproxTwoParams final
230
        : public AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>,
231
          public MultiExpression,
232
          public NullableAggregateFunction {
233
public:
234
    AggregateFunctionPercentileApproxTwoParams(const DataTypes& argument_types_)
235
0
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxTwoParams>(
236
0
                      argument_types_) {}
237
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
238
0
             Arena&) const override {
239
0
        const auto& sources =
240
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
241
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
242
0
        this->data(place).init(quantile_column.get_data()[0]);
243
0
        this->data(place).add(sources.get_element(row_num));
244
0
    }
245
246
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
247
248
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
249
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
250
0
        col.get_data().push_back(this->data(place).get());
251
0
    }
252
};
253
254
class AggregateFunctionPercentileApproxThreeParams final
255
        : public AggregateFunctionPercentileApproxBase<
256
                  AggregateFunctionPercentileApproxThreeParams>,
257
          public MultiExpression,
258
          public NullableAggregateFunction {
259
public:
260
    AggregateFunctionPercentileApproxThreeParams(const DataTypes& argument_types_)
261
0
            : AggregateFunctionPercentileApproxBase<AggregateFunctionPercentileApproxThreeParams>(
262
0
                      argument_types_) {}
263
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
264
0
             Arena&) const override {
265
0
        const auto& sources =
266
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
267
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
268
0
        const auto& compression_column =
269
0
                *check_and_get_column_with_const<ColumnFloat64>(*columns[2]);
270
0
        this->data(place).init(quantile_column.get_data()[0],
271
0
                               static_cast<float>(compression_column.get_data()[0]));
272
0
        this->data(place).add(sources.get_element(row_num));
273
0
    }
274
275
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
276
277
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
278
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
279
0
        col.get_data().push_back(this->data(place).get());
280
0
    }
281
};
282
283
class AggregateFunctionPercentileApproxWeightedThreeParams final
284
        : public AggregateFunctionPercentileApproxBase<
285
                  AggregateFunctionPercentileApproxWeightedThreeParams>,
286
          MultiExpression,
287
          NullableAggregateFunction {
288
public:
289
    AggregateFunctionPercentileApproxWeightedThreeParams(const DataTypes& argument_types_)
290
0
            : AggregateFunctionPercentileApproxBase<
291
0
                      AggregateFunctionPercentileApproxWeightedThreeParams>(argument_types_) {}
292
293
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
294
0
        static const std::vector<size_t> indexes {2};
295
0
        return indexes;
296
0
    }
297
298
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
299
0
             Arena&) const override {
300
0
        const auto& sources =
301
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
302
0
        const auto& weight =
303
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
304
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[2]);
305
306
0
        this->data(place).init(quantile_column.get_data()[0]);
307
0
        this->data(place).add_with_weight(sources.get_element(row_num),
308
0
                                          weight.get_element(row_num));
309
0
    }
310
311
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
312
313
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
314
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
315
0
        col.get_data().push_back(this->data(place).get());
316
0
    }
317
};
318
319
class AggregateFunctionPercentileApproxWeightedFourParams final
320
        : public AggregateFunctionPercentileApproxBase<
321
                  AggregateFunctionPercentileApproxWeightedFourParams>,
322
          MultiExpression,
323
          NullableAggregateFunction {
324
public:
325
    AggregateFunctionPercentileApproxWeightedFourParams(const DataTypes& argument_types_)
326
0
            : AggregateFunctionPercentileApproxBase<
327
0
                      AggregateFunctionPercentileApproxWeightedFourParams>(argument_types_) {}
328
329
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
330
0
        static const std::vector<size_t> indexes {2, 3};
331
0
        return indexes;
332
0
    }
333
334
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
335
0
             Arena&) const override {
336
0
        const auto& sources =
337
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[0]);
338
0
        const auto& weight =
339
0
                assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(*columns[1]);
340
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[2]);
341
0
        const auto& compression_column =
342
0
                *check_and_get_column_with_const<ColumnFloat64>(*columns[3]);
343
344
0
        this->data(place).init(quantile_column.get_data()[0],
345
0
                               static_cast<float>(compression_column.get_data()[0]));
346
0
        this->data(place).add_with_weight(sources.get_element(row_num),
347
0
                                          weight.get_element(row_num));
348
0
    }
349
350
0
    DataTypePtr get_return_type() const override { return std::make_shared<DataTypeFloat64>(); }
351
352
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
353
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
354
0
        col.get_data().push_back(this->data(place).get());
355
0
    }
356
};
357
358
template <PrimitiveType T>
359
struct PercentileState {
360
    mutable std::vector<Counts<typename PrimitiveTypeTraits<T>::CppType>> vec_counts;
361
    std::vector<double> vec_quantile {-1};
362
    bool inited_flag = false;
363
364
0
    void write(BufferWritable& buf) const {
365
0
        buf.write_binary(inited_flag);
366
0
        if (!inited_flag) {
367
0
            return;
368
0
        }
369
0
        int size_num = cast_set<int>(vec_quantile.size());
370
0
        buf.write_binary(size_num);
371
0
        for (const auto& quantile : vec_quantile) {
372
0
            buf.write_binary(quantile);
373
0
        }
374
0
        for (auto& counts : vec_counts) {
375
0
            counts.serialize(buf);
376
0
        }
377
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
378
379
0
    void read(BufferReadable& buf) {
380
0
        buf.read_binary(inited_flag);
381
0
        if (!inited_flag) {
382
0
            return;
383
0
        }
384
0
        int size_num = 0;
385
0
        buf.read_binary(size_num);
386
0
        double data = 0.0;
387
0
        vec_quantile.clear();
388
0
        for (int i = 0; i < size_num; ++i) {
389
0
            buf.read_binary(data);
390
0
            vec_quantile.emplace_back(data);
391
0
        }
392
0
        vec_counts.clear();
393
0
        vec_counts.resize(size_num);
394
0
        for (int i = 0; i < size_num; ++i) {
395
0
            vec_counts[i].unserialize(buf);
396
0
        }
397
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
398
399
0
    void add(typename PrimitiveTypeTraits<T>::CppType source, const Float64& q) {
400
0
        if (!inited_flag) {
401
0
            inited_flag = true;
402
0
            vec_counts.resize(1);
403
0
            vec_quantile.resize(1);
404
0
            check_quantile(q);
405
0
            vec_quantile[0] = q;
406
0
        }
407
0
        vec_counts[0].increment(source);
408
0
    }
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE3EE3addEaRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE4EE3addEsRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE5EE3addEiRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE6EE3addElRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE7EE3addEnRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE8EE3addEfRKd
Unexecuted instantiation: _ZN5doris15PercentileStateILNS_13PrimitiveTypeE9EE3addEdRKd
409
410
    void add(typename PrimitiveTypeTraits<T>::CppType source,
411
0
             const PaddedPODArray<Float64>& quantiles, const NullMap& null_map, int64_t arg_size) {
412
0
        if (!inited_flag) {
413
0
            vec_counts.resize(arg_size);
414
0
            vec_quantile.resize(arg_size, -1);
415
0
            inited_flag = true;
416
0
            for (int i = 0; i < arg_size; ++i) {
417
0
                if (null_map[i]) [[unlikely]] {
418
0
                    throw Exception(ErrorCode::INVALID_ARGUMENT,
419
0
                                    "percentile_array quantile should not be null");
420
0
                }
421
0
                check_quantile(quantiles[i]);
422
0
                vec_quantile[i] = quantiles[i];
423
0
            }
424
0
        }
425
0
        for (int i = 0; i < arg_size; ++i) {
426
0
            vec_counts[i].increment(source);
427
0
        }
428
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
429
430
    void add_batch(const PaddedPODArray<typename PrimitiveTypeTraits<T>::CppType>& source,
431
0
                   const Float64& q) {
432
0
        if (!inited_flag) {
433
0
            inited_flag = true;
434
0
            vec_counts.resize(1);
435
0
            vec_quantile.resize(1);
436
0
            check_quantile(q);
437
0
            vec_quantile[0] = q;
438
0
        }
439
0
        vec_counts[0].increment_batch(source);
440
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
441
442
0
    void merge(const PercentileState& rhs) {
443
0
        if (!rhs.inited_flag) {
444
0
            return;
445
0
        }
446
0
        int size_num = cast_set<int>(rhs.vec_quantile.size());
447
0
        if (!inited_flag) {
448
0
            vec_counts.resize(size_num);
449
0
            vec_quantile.resize(size_num, -1);
450
0
            inited_flag = true;
451
0
        }
452
453
0
        for (int i = 0; i < size_num; ++i) {
454
0
            if (vec_quantile[i] == -1.0) {
455
0
                vec_quantile[i] = rhs.vec_quantile[i];
456
0
            }
457
0
            vec_counts[i].merge(&(rhs.vec_counts[i]));
458
0
        }
459
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_
460
461
0
    void reset() {
462
0
        vec_counts.clear();
463
0
        vec_quantile.clear();
464
0
        inited_flag = false;
465
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
466
467
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
468
469
0
    void insert_result_into(IColumn& to) const {
470
0
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
471
0
        for (int i = 0; i < vec_counts.size(); ++i) {
472
0
            column_data.push_back(vec_counts[i].terminate(vec_quantile[i]));
473
0
        }
474
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
475
};
476
477
template <PrimitiveType T>
478
struct PercentileExactState {
479
    using ValueType = typename PrimitiveTypeTraits<T>::CppType;
480
    static constexpr size_t bytes_in_arena = 64 - sizeof(PODArray<ValueType>);
481
    using Array = PODArrayWithStackMemory<ValueType, bytes_in_arena>;
482
483
0
    void add_single_range(const ValueType* data, size_t count, double quantile) {
484
0
        if (!inited_flag) {
485
0
            _set_single_level(quantile);
486
0
            inited_flag = true;
487
0
        }
488
0
        _append(data, count);
489
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
490
491
    void add_many_range(const ValueType* data, size_t count,
492
                        const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_map,
493
0
                        int64_t arg_size) {
494
0
        if (!inited_flag) {
495
0
            _set_many_levels(quantiles_data, null_map, arg_size);
496
0
            inited_flag = true;
497
0
        }
498
0
        if (levels.empty()) {
499
0
            return;
500
0
        }
501
0
        _append(data, count);
502
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE14add_many_rangeEPKamRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE14add_many_rangeEPKsmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE14add_many_rangeEPKimRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE14add_many_rangeEPKlmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE14add_many_rangeEPKnmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE14add_many_rangeEPKfmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE14add_many_rangeEPKdmRKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS5_IhLm4096ES8_Lm16ELm15EEEl
503
504
0
    void write(BufferWritable& buf) const {
505
0
        buf.write_binary(inited_flag);
506
0
        if (!inited_flag) {
507
0
            return;
508
0
        }
509
510
0
        levels.write(buf);
511
0
        size_t size = values.size();
512
0
        buf.write_binary(size);
513
0
        if (size > 0) {
514
0
            buf.write(reinterpret_cast<const char*>(values.data()), sizeof(ValueType) * size);
515
0
        }
516
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
517
518
0
    void read(BufferReadable& buf) {
519
0
        reset();
520
0
        buf.read_binary(inited_flag);
521
0
        if (!inited_flag) {
522
0
            return;
523
0
        }
524
525
0
        levels.read(buf);
526
0
        size_t size = 0;
527
0
        buf.read_binary(size);
528
0
        values.resize(size);
529
0
        if (size > 0) {
530
0
            auto raw = buf.read(sizeof(ValueType) * size);
531
0
            memcpy(values.data(), raw.data, raw.size);
532
0
        }
533
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
534
535
0
    void merge(const PercentileExactState& rhs) {
536
0
        if (!rhs.inited_flag) {
537
0
            return;
538
0
        }
539
540
0
        if (!inited_flag) {
541
0
            levels = rhs.levels;
542
0
            inited_flag = true;
543
0
        } else {
544
0
            levels.merge(rhs.levels);
545
0
        }
546
0
        _append(rhs.values.data(), rhs.values.size());
547
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_
548
549
0
    void reset() {
550
0
        values.clear();
551
0
        levels.clear();
552
0
        inited_flag = false;
553
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
554
555
0
    double get() const {
556
0
        if (!inited_flag || levels.empty() || values.empty()) {
557
0
            return std::numeric_limits<double>::quiet_NaN();
558
0
        }
559
560
0
        DCHECK_EQ(levels.quantiles.size(), 1);
561
0
        return _get_result(levels.quantiles[0]);
562
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
563
564
0
    void insert_result_into(IColumn& to) const {
565
0
        auto& column_data = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to).get_data();
566
0
        if (!inited_flag || levels.empty()) {
567
0
            return;
568
0
        }
569
570
0
        size_t old_size = column_data.size();
571
0
        size_t size = levels.quantiles.size();
572
0
        column_data.resize(old_size + size);
573
0
        auto* result = column_data.data() + old_size;
574
575
0
        if (values.empty()) {
576
0
            for (size_t i = 0; i < size; ++i) {
577
0
                result[i] = std::numeric_limits<double>::quiet_NaN();
578
0
            }
579
0
            return;
580
0
        }
581
582
0
        if (values.size() == 1) {
583
0
            for (size_t i = 0; i < size; ++i) {
584
0
                result[i] = static_cast<double>(values.front());
585
0
            }
586
0
            return;
587
0
        }
588
589
0
        size_t prev_index = 0;
590
0
        const auto& quantiles = levels.quantiles;
591
0
        const auto& permutation = levels.get_permutation();
592
0
        for (size_t i = 0; i < size; ++i) {
593
0
            auto level_index = permutation[i];
594
0
            auto level = quantiles[level_index];
595
0
            double u = static_cast<double>(values.size() - 1) * level;
596
0
            auto index = static_cast<size_t>(u);
597
598
0
            if (index + 1 >= values.size()) {
599
0
                result[level_index] =
600
0
                        static_cast<double>(*std::max_element(values.begin(), values.end()));
601
0
            } else {
602
0
                std::nth_element(values.begin() + prev_index, values.begin() + index, values.end());
603
0
                auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
604
0
                result[level_index] =
605
0
                        static_cast<double>(values[index]) +
606
0
                        (u - static_cast<double>(index)) * (static_cast<double>(*nth_elem) -
607
0
                                                            static_cast<double>(values[index]));
608
0
                prev_index = index;
609
0
            }
610
0
        }
611
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
612
613
private:
614
0
    void _set_single_level(double quantile) {
615
0
        DCHECK(levels.empty());
616
0
        check_quantile(quantile);
617
0
        levels.quantiles.push_back(quantile);
618
0
        levels.permutation.push_back(0);
619
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
620
621
    void _set_many_levels(const PaddedPODArray<Float64>& quantiles_data, const NullMap& null_map,
622
0
                          int64_t arg_size) {
623
0
        DCHECK(levels.empty());
624
0
        size_t size = cast_set<size_t>(arg_size);
625
0
        levels.quantiles.resize(size);
626
0
        levels.permutation.resize(size);
627
0
        for (size_t i = 0; i < size; ++i) {
628
0
            if (null_map[i]) [[unlikely]] {
629
0
                throw Exception(ErrorCode::INVALID_ARGUMENT,
630
0
                                "percentile_array quantile should not be null");
631
0
            }
632
0
            check_quantile(quantiles_data[i]);
633
0
            levels.quantiles[i] = quantiles_data[i];
634
0
            levels.permutation[i] = i;
635
0
        }
636
0
    }
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE3EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE4EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE5EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE6EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE7EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE8EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
Unexecuted instantiation: _ZN5doris20PercentileExactStateILNS_13PrimitiveTypeE9EE16_set_many_levelsERKNS_8PODArrayIdLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEERKNS3_IhLm4096ES6_Lm16ELm15EEEl
637
638
0
    void _append(const ValueType* data, size_t count) {
639
0
        if (count == 0) {
640
0
            return;
641
0
        }
642
0
        values.reserve(values.size() + count);
643
0
        if constexpr (std::is_floating_point_v<ValueType>) {
644
0
            for (size_t i = 0; i < count; ++i) {
645
0
                if (!std::isnan(data[i])) {
646
0
                    values.push_back(data[i]);
647
0
                }
648
0
            }
649
0
        } else {
650
0
            values.insert_assume_reserved(data, data + count);
651
0
        }
652
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
653
654
0
    double _get_result(double quantile) const {
655
0
        if (values.size() == 1) {
656
0
            return static_cast<double>(values.front());
657
0
        }
658
659
0
        double u = static_cast<double>(values.size() - 1) * quantile;
660
0
        auto index = static_cast<size_t>(u);
661
662
0
        if (index + 1 >= values.size()) {
663
0
            return static_cast<double>(*std::max_element(values.begin(), values.end()));
664
0
        }
665
666
0
        std::nth_element(values.begin(), values.begin() + index, values.end());
667
0
        auto* nth_elem = std::min_element(values.begin() + index + 1, values.end());
668
669
0
        return static_cast<double>(values[index]) +
670
0
               (u - static_cast<double>(index)) *
671
0
                       (static_cast<double>(*nth_elem) - static_cast<double>(values[index]));
672
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
673
674
    mutable Array values;
675
    mutable PercentileLevels levels;
676
    bool inited_flag = false;
677
};
678
679
template <PrimitiveType T>
680
class AggregateFunctionPercentile final
681
        : public IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>,
682
          MultiExpression,
683
          NullableAggregateFunction {
684
public:
685
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
686
    using Base = IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentile<T>>;
687
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
687
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
688
689
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
689
2
    String get_name() const override { return "percentile"; }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
690
691
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
692
693
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
694
0
        static const std::vector<size_t> indexes {1};
695
0
        return indexes;
696
0
    }
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE3EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE4EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE5EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE6EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE7EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE8EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris27AggregateFunctionPercentileILNS_13PrimitiveTypeE9EE26get_const_argument_indexesEv
697
698
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
699
0
             Arena&) const override {
700
0
        const auto& sources =
701
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
702
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
703
0
        AggregateFunctionPercentile::data(place).add(sources.get_data()[row_num],
704
0
                                                     quantile_column.get_data()[0]);
705
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
706
707
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
708
0
                                Arena&) const override {
709
0
        const auto& sources =
710
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
711
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
712
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
713
0
        AggregateFunctionPercentile::data(place).add_batch(sources.get_data(),
714
0
                                                           quantile_column.get_data()[0]);
715
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
716
717
0
    void check_input_columns_type(const IColumn** columns) const override {
718
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
719
0
        this->template check_const_argument_column_type<ColumnFloat64>(columns[1]);
720
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
721
722
0
    void reset(AggregateDataPtr __restrict place) const override {
723
0
        AggregateFunctionPercentile::data(place).reset();
724
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
725
726
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
727
0
               Arena&) const override {
728
0
        AggregateFunctionPercentile::data(place).merge(AggregateFunctionPercentile::data(rhs));
729
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
730
731
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
732
0
        AggregateFunctionPercentile::data(place).write(buf);
733
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
734
735
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
736
0
                     Arena&) const override {
737
0
        AggregateFunctionPercentile::data(place).read(buf);
738
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
739
740
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
741
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
742
0
        col.insert_value(AggregateFunctionPercentile::data(place).get());
743
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
744
};
745
746
template <PrimitiveType T>
747
class AggregateFunctionPercentileArray final
748
        : public IAggregateFunctionDataHelper<PercentileState<T>,
749
                                              AggregateFunctionPercentileArray<T>>,
750
          MultiExpression,
751
          NotNullableAggregateFunction {
752
public:
753
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
754
    using Base =
755
            IAggregateFunctionDataHelper<PercentileState<T>, AggregateFunctionPercentileArray<T>>;
756
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
756
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
757
758
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
758
1
    String get_name() const override { return "percentile_array"; }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
759
760
0
    DataTypePtr get_return_type() const override {
761
0
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
762
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
763
764
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
765
0
        static const std::vector<size_t> indexes {1};
766
0
        return indexes;
767
0
    }
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE3EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE4EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE5EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE6EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE7EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE8EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris32AggregateFunctionPercentileArrayILNS_13PrimitiveTypeE9EE26get_const_argument_indexesEv
768
769
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
770
0
             Arena&) const override {
771
0
        const auto& sources =
772
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
773
0
        const auto& quantile_array = *check_and_get_column_with_const<ColumnArray>(*columns[1]);
774
0
        const auto& nullable_quantiles =
775
0
                assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
776
0
                        quantile_array.get_data());
777
0
        const auto& quantile_data = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
778
0
                                            nullable_quantiles.get_nested_column())
779
0
                                            .get_data();
780
0
        const auto& null_map = nullable_quantiles.get_null_map_data();
781
0
        const auto quantiles_size = cast_set<int64_t>(quantile_array.get_offsets()[0]);
782
0
        AggregateFunctionPercentileArray::data(place).add(sources.get_element(row_num),
783
0
                                                          quantile_data, null_map, quantiles_size);
784
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
785
786
0
    void check_input_columns_type(const IColumn** columns) const override {
787
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
788
0
        check_percentile_array_column_type(*this, *columns[1], 1);
789
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
790
791
0
    void reset(AggregateDataPtr __restrict place) const override {
792
0
        AggregateFunctionPercentileArray::data(place).reset();
793
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
794
795
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
796
0
               Arena&) const override {
797
0
        AggregateFunctionPercentileArray::data(place).merge(
798
0
                AggregateFunctionPercentileArray::data(rhs));
799
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
800
801
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
802
0
        AggregateFunctionPercentileArray::data(place).write(buf);
803
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
804
805
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
806
0
                     Arena&) const override {
807
0
        AggregateFunctionPercentileArray::data(place).read(buf);
808
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
809
810
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
811
0
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
812
0
        auto& to_nested_col = to_arr.get_data();
813
0
        if (is_column_nullable(to_nested_col)) {
814
0
            auto col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
815
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(
816
0
                    col_null->get_nested_column());
817
0
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
818
0
        } else {
819
0
            AggregateFunctionPercentileArray::data(place).insert_result_into(to_nested_col);
820
0
        }
821
0
        to_arr.get_offsets().push_back(to_nested_col.size());
822
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
823
};
824
825
template <PrimitiveType T>
826
class AggregateFunctionPercentileV2 final
827
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
828
                                              AggregateFunctionPercentileV2<T>>,
829
          MultiExpression,
830
          NullableAggregateFunction {
831
public:
832
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
833
    using Base =
834
            IAggregateFunctionDataHelper<PercentileExactState<T>, AggregateFunctionPercentileV2<T>>;
835
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
835
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
836
837
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
837
2
    String get_name() const override { return "percentile_v2"; }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE8get_nameB5cxx11Ev
838
839
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
840
841
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
842
0
        static const std::vector<size_t> indexes {1};
843
0
        return indexes;
844
0
    }
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE3EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE4EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE5EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE6EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE7EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE8EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris29AggregateFunctionPercentileV2ILNS_13PrimitiveTypeE9EE26get_const_argument_indexesEv
845
846
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
847
0
             Arena&) const override {
848
0
        const auto& sources =
849
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
850
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
851
0
        AggregateFunctionPercentileV2::data(place).add_single_range(&sources.get_data()[row_num], 1,
852
0
                                                                    quantile_column.get_data()[0]);
853
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
854
855
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
856
0
                                Arena&) const override {
857
0
        const auto& sources =
858
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
859
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
860
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
861
0
        AggregateFunctionPercentileV2::data(place).add_single_range(
862
0
                sources.get_data().data(), batch_size, quantile_column.get_data()[0]);
863
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
864
865
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
866
0
                         const IColumn** columns, Arena&, bool has_null) override {
867
0
        const auto& sources =
868
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
869
0
        DCHECK(!has_null);
870
0
        const auto& quantile_column = *check_and_get_column_with_const<ColumnFloat64>(*columns[1]);
871
0
        AggregateFunctionPercentileV2::data(place).add_single_range(
872
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1,
873
0
                quantile_column.get_data()[0]);
874
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
875
876
0
    void check_input_columns_type(const IColumn** columns) const override {
877
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
878
0
        this->template check_const_argument_column_type<ColumnFloat64>(columns[1]);
879
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
880
881
0
    void reset(AggregateDataPtr __restrict place) const override {
882
0
        AggregateFunctionPercentileV2::data(place).reset();
883
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
884
885
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
886
0
               Arena&) const override {
887
0
        AggregateFunctionPercentileV2::data(place).merge(AggregateFunctionPercentileV2::data(rhs));
888
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
889
890
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
891
0
        AggregateFunctionPercentileV2::data(place).write(buf);
892
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
893
894
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
895
0
                     Arena&) const override {
896
0
        AggregateFunctionPercentileV2::data(place).read(buf);
897
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
898
899
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
900
0
        auto& col = assert_cast<ColumnFloat64&, TypeCheckOnRelease::DISABLE>(to);
901
0
        col.insert_value(AggregateFunctionPercentileV2::data(place).get());
902
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
903
};
904
905
template <PrimitiveType T>
906
class AggregateFunctionPercentileArrayV2 final
907
        : public IAggregateFunctionDataHelper<PercentileExactState<T>,
908
                                              AggregateFunctionPercentileArrayV2<T>>,
909
          MultiExpression,
910
          NotNullableAggregateFunction {
911
public:
912
    using ColVecType = typename PrimitiveTypeTraits<T>::ColumnType;
913
    using Base = IAggregateFunctionDataHelper<PercentileExactState<T>,
914
                                              AggregateFunctionPercentileArrayV2<T>>;
915
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
915
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
916
917
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
917
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
918
919
0
    DataTypePtr get_return_type() const override {
920
0
        return std::make_shared<DataTypeArray>(make_nullable(std::make_shared<DataTypeFloat64>()));
921
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
922
923
0
    const std::vector<size_t>& get_const_argument_indexes() const override {
924
0
        static const std::vector<size_t> indexes {1};
925
0
        return indexes;
926
0
    }
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE3EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE4EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE5EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE6EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE7EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE8EE26get_const_argument_indexesEv
Unexecuted instantiation: _ZNK5doris34AggregateFunctionPercentileArrayV2ILNS_13PrimitiveTypeE9EE26get_const_argument_indexesEv
927
928
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
929
0
             Arena&) const override {
930
0
        const auto& sources =
931
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
932
0
        const auto& quantile_array = *check_and_get_column_with_const<ColumnArray>(*columns[1]);
933
0
        const auto& nullable_quantiles =
934
0
                assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
935
0
                        quantile_array.get_data());
936
0
        const auto& quantile_data = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
937
0
                                            nullable_quantiles.get_nested_column())
938
0
                                            .get_data();
939
0
        const auto& null_map = nullable_quantiles.get_null_map_data();
940
0
        const auto quantiles_size = cast_set<int64_t>(quantile_array.get_offsets()[0]);
941
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
942
0
                &sources.get_data()[row_num], 1, quantile_data, null_map, quantiles_size);
943
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
944
945
    void add_batch_single_place(size_t batch_size, AggregateDataPtr place, const IColumn** columns,
946
0
                                Arena&) const override {
947
0
        const auto& sources =
948
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
949
0
        DCHECK_EQ(sources.get_data().size(), batch_size);
950
0
        const auto& quantile_array = *check_and_get_column_with_const<ColumnArray>(*columns[1]);
951
0
        const auto& nullable_quantiles =
952
0
                assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
953
0
                        quantile_array.get_data());
954
0
        const auto& quantile_data = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
955
0
                                            nullable_quantiles.get_nested_column())
956
0
                                            .get_data();
957
0
        const auto& null_map = nullable_quantiles.get_null_map_data();
958
0
        const auto quantiles_size = cast_set<int64_t>(quantile_array.get_offsets()[0]);
959
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
960
0
                sources.get_data().data(), batch_size, quantile_data, null_map, quantiles_size);
961
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
962
963
    void add_batch_range(size_t batch_begin, size_t batch_end, AggregateDataPtr place,
964
0
                         const IColumn** columns, Arena&, bool has_null) override {
965
0
        const auto& sources =
966
0
                assert_cast<const ColVecType&, TypeCheckOnRelease::DISABLE>(*columns[0]);
967
0
        DCHECK(!has_null);
968
0
        const auto& quantile_array = *check_and_get_column_with_const<ColumnArray>(*columns[1]);
969
0
        const auto& nullable_quantiles =
970
0
                assert_cast<const ColumnNullable&, TypeCheckOnRelease::DISABLE>(
971
0
                        quantile_array.get_data());
972
0
        const auto& quantile_data = assert_cast<const ColumnFloat64&, TypeCheckOnRelease::DISABLE>(
973
0
                                            nullable_quantiles.get_nested_column())
974
0
                                            .get_data();
975
0
        const auto& null_map = nullable_quantiles.get_null_map_data();
976
0
        const auto quantiles_size = cast_set<int64_t>(quantile_array.get_offsets()[0]);
977
0
        AggregateFunctionPercentileArrayV2::data(place).add_many_range(
978
0
                sources.get_data().data() + batch_begin, batch_end - batch_begin + 1, quantile_data,
979
0
                null_map, quantiles_size);
980
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
981
982
0
    void check_input_columns_type(const IColumn** columns) const override {
983
0
        this->template check_argument_column_type<ColVecType>(columns[0]);
984
0
        check_percentile_array_column_type(*this, *columns[1], 1);
985
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
986
987
0
    void reset(AggregateDataPtr __restrict place) const override {
988
0
        AggregateFunctionPercentileArrayV2::data(place).reset();
989
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
990
991
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
992
0
               Arena&) const override {
993
0
        AggregateFunctionPercentileArrayV2::data(place).merge(
994
0
                AggregateFunctionPercentileArrayV2::data(rhs));
995
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
996
997
0
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
998
0
        AggregateFunctionPercentileArrayV2::data(place).write(buf);
999
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
1000
1001
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
1002
0
                     Arena&) const override {
1003
0
        AggregateFunctionPercentileArrayV2::data(place).read(buf);
1004
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
1005
1006
0
    void insert_result_into(ConstAggregateDataPtr __restrict place, IColumn& to) const override {
1007
0
        auto& to_arr = assert_cast<ColumnArray&, TypeCheckOnRelease::DISABLE>(to);
1008
0
        auto& to_nested_col = to_arr.get_data();
1009
0
        if (is_column_nullable(to_nested_col)) {
1010
0
            auto* col_null = reinterpret_cast<ColumnNullable*>(&to_nested_col);
1011
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(
1012
0
                    col_null->get_nested_column());
1013
0
            col_null->get_null_map_data().resize_fill(col_null->get_nested_column().size(), 0);
1014
0
        } else {
1015
0
            AggregateFunctionPercentileArrayV2::data(place).insert_result_into(to_nested_col);
1016
0
        }
1017
0
        to_arr.get_offsets().push_back(to_nested_col.size());
1018
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
1019
};
1020
1021
} // namespace doris