Coverage Report

Created: 2026-07-07 23:56

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/array/function_array_aggregation.cpp
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
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/array/arrayAggregation.cpp
19
// and modified by Doris
20
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include <memory>
25
#include <type_traits>
26
#include <utility>
27
28
#include "common/exception.h"
29
#include "common/status.h"
30
#include "core/arena.h"
31
#include "core/block/block.h"
32
#include "core/block/column_numbers.h"
33
#include "core/column/column.h"
34
#include "core/column/column_array.h"
35
#include "core/column/column_decimal.h"
36
#include "core/column/column_nullable.h"
37
#include "core/data_type/data_type.h"
38
#include "core/data_type/data_type_array.h"
39
#include "core/data_type/data_type_nullable.h"
40
#include "core/data_type/define_primitive_type.h"
41
#include "core/data_type/primitive_type.h"
42
#include "core/types.h"
43
#include "exprs/aggregate/aggregate_function.h"
44
#include "exprs/aggregate/aggregate_function_avg.h"
45
#include "exprs/aggregate/aggregate_function_min_max.h"
46
#include "exprs/aggregate/aggregate_function_product.h"
47
#include "exprs/aggregate/aggregate_function_simple_factory.h"
48
#include "exprs/aggregate/aggregate_function_sum.h"
49
#include "exprs/aggregate/helpers.h"
50
#include "exprs/function/array/function_array_join.h"
51
#include "exprs/function/array/function_array_mapped.h"
52
#include "exprs/function/function.h"
53
#include "exprs/function/simple_function_factory.h"
54
#include "storage/predicate/column_predicate.h"
55
56
namespace doris {
57
58
enum class AggregateOperation { MIN, MAX, SUM, AVERAGE, PRODUCT };
59
60
// For MIN/MAX, the type of result is the same as the type of elements, we can omit the
61
// template specialization.
62
template <AggregateOperation operation>
63
struct AggregateFunctionTraits;
64
65
template <AggregateOperation operation>
66
    requires(operation == AggregateOperation::MIN || operation == AggregateOperation::MAX)
67
struct AggregateFunctionTraits<operation> {
68
    template <PrimitiveType Element>
69
    struct TypeTraits {
70
        static constexpr PrimitiveType ResultType = Element;
71
    };
72
};
73
74
template <>
75
struct AggregateFunctionTraits<AggregateOperation::SUM> {
76
    template <PrimitiveType Element>
77
    struct TypeTraits {
78
        static constexpr PrimitiveType ResultType =
79
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2
80
                : is_float_or_double(Element)
81
                        ? TYPE_DOUBLE
82
                        : (Element == TYPE_LARGEINT ? TYPE_LARGEINT : TYPE_BIGINT);
83
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
84
        using Function = AggregateFunctionSum<Element, ResultType, AggregateDataType>;
85
    };
86
};
87
template <>
88
struct AggregateFunctionTraits<AggregateOperation::AVERAGE> {
89
    template <PrimitiveType Element>
90
    struct TypeTraits {
91
        static constexpr PrimitiveType ResultType =
92
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : TYPE_DOUBLE;
93
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
94
        using Function = AggregateFunctionAvg<Element, ResultType, AggregateDataType>;
95
        static_assert(std::is_same_v<typename PrimitiveTypeTraits<ResultType>::CppType,
96
                                     typename Function::ResultType>,
97
                      "ResultType doesn't match.");
98
    };
99
};
100
101
template <>
102
struct AggregateFunctionTraits<AggregateOperation::PRODUCT> {
103
    template <PrimitiveType Element>
104
    struct TypeTraits {
105
        static constexpr PrimitiveType ResultType =
106
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : Element;
107
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
108
        using Function = AggregateFunctionProduct<Element, ResultType, AggregateDataType>;
109
    };
110
};
111
112
template <AggregateOperation AggOp, typename Derived>
113
struct ArrayAggregateFunctionCreator {
114
    template <PrimitiveType T>
115
    using Function = typename Derived::template TypeTraits<T>::Function;
116
117
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
118
76
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
76
        } else {
126
76
            return creator_with_type_list<
127
76
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
76
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
76
                                                   attr);
130
76
        }
131
76
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE2ENS_23AggregateFunctionTraitsILS1_2EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE3ENS_23AggregateFunctionTraitsILS1_3EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE4ENS_23AggregateFunctionTraitsILS1_4EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
20
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
20
        } else {
126
20
            return creator_with_type_list<
127
20
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
20
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
20
                                                   attr);
130
20
        }
131
20
    }
132
};
133
134
template <AggregateOperation operation>
135
struct ArrayAggregateImpl {
136
    using column_type = ColumnArray;
137
    using data_type = DataTypeArray;
138
139
76
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12_is_variadicEv
Line
Count
Source
139
10
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
140
141
74
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE24_get_number_of_argumentsEv
Line
Count
Source
141
10
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
142
143
    static bool skip_return_type_check() { return false; }
144
145
74
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
74
        using Function =
147
74
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
74
        const DataTypeArray* data_type_array =
149
74
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
74
        auto function = Function::create(data_type_array->get_nested_type(),
151
74
                                         {.is_window_function = false, .column_names = {}});
152
74
        if (function) {
153
74
            return function->get_return_type();
154
74
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
10
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
10
        using Function =
147
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
10
        const DataTypeArray* data_type_array =
149
10
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
10
        auto function = Function::create(data_type_array->get_nested_type(),
151
10
                                         {.is_window_function = false, .column_names = {}});
152
10
        if (function) {
153
10
            return function->get_return_type();
154
10
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
160
161
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
162
74
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
74
        ColumnPtr res;
164
74
        DataTypePtr type = data_type_array->get_nested_type();
165
74
        const IColumn* data = array.get_data_ptr().get();
166
167
74
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
36
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
36
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
36
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
8
                block.replace_by_position(result, std::move(res));
174
8
                return Status::OK();
175
8
            }
176
36
        }
177
178
74
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
74
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
74
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
74
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
74
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
74
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
74
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
74
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
74
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
74
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
74
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
74
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
74
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
74
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
74
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
74
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
66
            block.replace_by_position(result, std::move(res));
195
66
            return Status::OK();
196
66
        } else {
197
8
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
8
        }
199
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
10
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
10
        ColumnPtr res;
164
10
        DataTypePtr type = data_type_array->get_nested_type();
165
10
        const IColumn* data = array.get_data_ptr().get();
166
167
10
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
10
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
10
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
10
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
10
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
10
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
10
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
10
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
10
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
10
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
10
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
10
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
10
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
10
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
10
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
10
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
10
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
10
            block.replace_by_position(result, std::move(res));
195
10
            return Status::OK();
196
10
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
4
                block.replace_by_position(result, std::move(res));
174
4
                return Status::OK();
175
4
            }
176
18
        }
177
178
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
4
        }
199
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
4
                block.replace_by_position(result, std::move(res));
174
4
                return Status::OK();
175
4
            }
176
18
        }
177
178
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
4
        }
199
18
    }
200
201
    template <typename ColumnType, typename CreateColumnFunc>
202
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
203
                                  const ColumnArray::Offsets64& offsets,
204
408
                                  CreateColumnFunc create_column_func) {
205
408
        using Function =
206
408
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
408
        const ColumnType* column =
209
408
                is_column_nullable(*data)
210
408
                        ? check_and_get_column<ColumnType>(
211
408
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
408
                        : check_and_get_column<ColumnType>(&*data);
213
408
        if (!column) {
214
334
            return false;
215
334
        }
216
217
74
        ColumnPtr res_column = create_column_func(column);
218
74
        res_column = make_nullable(res_column);
219
74
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
74
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
74
        auto guard = AggregateFunctionGuard(function.get());
223
74
        Arena arena;
224
74
        auto nullable_column = make_nullable(data->get_ptr());
225
74
        const IColumn* columns[] = {nullable_column.get()};
226
74
        function->check_input_columns_type(columns);
227
74
        function->check_result_column_type(*res_column);
228
259
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
185
            auto start = offsets[i - 1]; // -1 is ok.
230
185
            auto end = offsets[i];
231
185
            bool is_empty = (start == end);
232
185
            if (is_empty) {
233
74
                res_column->assert_mutable()->insert_default();
234
74
                continue;
235
74
            }
236
111
            function->reset(guard.data());
237
111
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
111
                                      is_column_nullable(*data));
239
111
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
111
        }
241
74
        res_ptr = std::move(res_column);
242
74
        return true;
243
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                is_column_nullable(*data)
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                is_column_nullable(*data)
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                is_column_nullable(*data)
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                is_column_nullable(*data)
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                is_column_nullable(*data)
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                is_column_nullable(*data)
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                is_column_nullable(*data)
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                is_column_nullable(*data)
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                is_column_nullable(*data)
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                is_column_nullable(*data)
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                is_column_nullable(*data)
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                is_column_nullable(*data)
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                is_column_nullable(*data)
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                is_column_nullable(*data)
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
18
                                  CreateColumnFunc create_column_func) {
205
18
        using Function =
206
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
18
        const ColumnType* column =
209
18
                is_column_nullable(*data)
210
18
                        ? check_and_get_column<ColumnType>(
211
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
18
                        : check_and_get_column<ColumnType>(&*data);
213
18
        if (!column) {
214
16
            return false;
215
16
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
16
                                  CreateColumnFunc create_column_func) {
205
16
        using Function =
206
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
16
        const ColumnType* column =
209
16
                is_column_nullable(*data)
210
16
                        ? check_and_get_column<ColumnType>(
211
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
16
                        : check_and_get_column<ColumnType>(&*data);
213
16
        if (!column) {
214
14
            return false;
215
14
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                is_column_nullable(*data)
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                is_column_nullable(*data)
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                is_column_nullable(*data)
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                is_column_nullable(*data)
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                is_column_nullable(*data)
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEZNS2_12execute_typeILS5_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEZNS2_12execute_typeILS5_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEZNS2_12execute_typeILS5_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEZNS2_12execute_typeILS5_25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEZNS2_12execute_typeILS5_26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEZNS2_12execute_typeILS5_42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
18
                                  CreateColumnFunc create_column_func) {
205
18
        using Function =
206
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
18
        const ColumnType* column =
209
18
                is_column_nullable(*data)
210
18
                        ? check_and_get_column<ColumnType>(
211
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
18
                        : check_and_get_column<ColumnType>(&*data);
213
18
        if (!column) {
214
16
            return false;
215
16
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
16
                                  CreateColumnFunc create_column_func) {
205
16
        using Function =
206
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
16
        const ColumnType* column =
209
16
                is_column_nullable(*data)
210
16
                        ? check_and_get_column<ColumnType>(
211
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
16
                        : check_and_get_column<ColumnType>(&*data);
213
16
        if (!column) {
214
14
            return false;
215
14
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        function->check_input_columns_type(columns);
227
0
        function->check_result_column_type(*res_column);
228
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
0
            auto start = offsets[i - 1]; // -1 is ok.
230
0
            auto end = offsets[i];
231
0
            bool is_empty = (start == end);
232
0
            if (is_empty) {
233
0
                res_column->assert_mutable()->insert_default();
234
0
                continue;
235
0
            }
236
0
            function->reset(guard.data());
237
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
0
                                      is_column_nullable(*data));
239
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
0
        }
241
0
        res_ptr = std::move(res_column);
242
0
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                is_column_nullable(*data)
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                is_column_nullable(*data)
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                is_column_nullable(*data)
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                is_column_nullable(*data)
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                is_column_nullable(*data)
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                is_column_nullable(*data)
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                is_column_nullable(*data)
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
2
        function->check_input_columns_type(columns);
227
2
        function->check_result_column_type(*res_column);
228
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
229
5
            auto start = offsets[i - 1]; // -1 is ok.
230
5
            auto end = offsets[i];
231
5
            bool is_empty = (start == end);
232
5
            if (is_empty) {
233
2
                res_column->assert_mutable()->insert_default();
234
2
                continue;
235
2
            }
236
3
            function->reset(guard.data());
237
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
238
3
                                      is_column_nullable(*data));
239
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
240
3
        }
241
2
        res_ptr = std::move(res_column);
242
2
        return true;
243
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEZNS2_12execute_typeILS5_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEZNS2_12execute_typeILS5_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEZNS2_12execute_typeILS5_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEZNS2_12execute_typeILS5_25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEZNS2_12execute_typeILS5_26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEZNS2_12execute_typeILS5_42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
244
245
    template <PrimitiveType Element>
246
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
247
408
                             const ColumnArray::Offsets64& offsets) {
248
408
        if constexpr (is_string_type(Element)) {
249
0
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
0
                operation == AggregateOperation::AVERAGE) {
251
0
                return false;
252
0
            }
253
254
0
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
0
                return ColumnString::create();
256
0
            };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
257
258
0
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
0
                                                                            offsets, create_column);
260
408
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
0
                           is_decimalv3(Element))) {
266
0
                return false;
267
408
            } else {
268
408
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
408
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
408
                        operation>::template TypeTraits<Element>::ResultType;
271
408
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
408
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
74
                    if constexpr (is_decimal(Element)) {
275
0
                        return ColVecResultType::create(0, column->get_scale());
276
74
                    } else {
277
74
                        return ColVecResultType::create();
278
74
                    }
279
74
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
                    if constexpr (is_decimal(Element)) {
275
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
280
281
408
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
408
                        res_ptr, type, data, offsets, create_column);
283
408
            }
284
408
        }
285
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
12
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
12
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
12
            } else {
268
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
12
                        operation>::template TypeTraits<Element>::ResultType;
271
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
12
                    if constexpr (is_decimal(Element)) {
275
12
                        return ColVecResultType::create(0, column->get_scale());
276
12
                    } else {
277
12
                        return ColVecResultType::create();
278
12
                    }
279
12
                };
280
281
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
12
                        res_ptr, type, data, offsets, create_column);
283
12
            }
284
12
        }
285
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
8
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
8
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
8
            } else {
268
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
8
                        operation>::template TypeTraits<Element>::ResultType;
271
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
8
                    if constexpr (is_decimal(Element)) {
275
8
                        return ColVecResultType::create(0, column->get_scale());
276
8
                    } else {
277
8
                        return ColVecResultType::create();
278
8
                    }
279
8
                };
280
281
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
8
                        res_ptr, type, data, offsets, create_column);
283
8
            }
284
8
        }
285
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
6
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
6
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
6
            } else {
268
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
6
                        operation>::template TypeTraits<Element>::ResultType;
271
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
6
                    if constexpr (is_decimal(Element)) {
275
6
                        return ColVecResultType::create(0, column->get_scale());
276
6
                    } else {
277
6
                        return ColVecResultType::create();
278
6
                    }
279
6
                };
280
281
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
6
                        res_ptr, type, data, offsets, create_column);
283
6
            }
284
6
        }
285
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
4
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
4
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
4
            } else {
268
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
4
                        operation>::template TypeTraits<Element>::ResultType;
271
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
4
                    if constexpr (is_decimal(Element)) {
275
4
                        return ColVecResultType::create(0, column->get_scale());
276
4
                    } else {
277
4
                        return ColVecResultType::create();
278
4
                    }
279
4
                };
280
281
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
4
                        res_ptr, type, data, offsets, create_column);
283
4
            }
284
4
        }
285
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
2
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
2
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
2
            } else {
268
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
2
                        operation>::template TypeTraits<Element>::ResultType;
271
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
2
                    if constexpr (is_decimal(Element)) {
275
2
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
280
281
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
2
                        res_ptr, type, data, offsets, create_column);
283
2
            }
284
2
        }
285
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
12
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
12
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
12
            } else {
268
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
12
                        operation>::template TypeTraits<Element>::ResultType;
271
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
12
                    if constexpr (is_decimal(Element)) {
275
12
                        return ColVecResultType::create(0, column->get_scale());
276
12
                    } else {
277
12
                        return ColVecResultType::create();
278
12
                    }
279
12
                };
280
281
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
12
                        res_ptr, type, data, offsets, create_column);
283
12
            }
284
12
        }
285
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
8
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
8
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
8
            } else {
268
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
8
                        operation>::template TypeTraits<Element>::ResultType;
271
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
8
                    if constexpr (is_decimal(Element)) {
275
8
                        return ColVecResultType::create(0, column->get_scale());
276
8
                    } else {
277
8
                        return ColVecResultType::create();
278
8
                    }
279
8
                };
280
281
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
8
                        res_ptr, type, data, offsets, create_column);
283
8
            }
284
8
        }
285
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
6
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
6
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
6
            } else {
268
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
6
                        operation>::template TypeTraits<Element>::ResultType;
271
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
6
                    if constexpr (is_decimal(Element)) {
275
6
                        return ColVecResultType::create(0, column->get_scale());
276
6
                    } else {
277
6
                        return ColVecResultType::create();
278
6
                    }
279
6
                };
280
281
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
6
                        res_ptr, type, data, offsets, create_column);
283
6
            }
284
6
        }
285
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
4
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
4
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
4
            } else {
268
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
4
                        operation>::template TypeTraits<Element>::ResultType;
271
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
4
                    if constexpr (is_decimal(Element)) {
275
4
                        return ColVecResultType::create(0, column->get_scale());
276
4
                    } else {
277
4
                        return ColVecResultType::create();
278
4
                    }
279
4
                };
280
281
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
4
                        res_ptr, type, data, offsets, create_column);
283
4
            }
284
4
        }
285
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
2
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
2
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
2
            } else {
268
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
2
                        operation>::template TypeTraits<Element>::ResultType;
271
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
2
                    if constexpr (is_decimal(Element)) {
275
2
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
280
281
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
2
                        res_ptr, type, data, offsets, create_column);
283
2
            }
284
2
        }
285
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
8
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
8
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
8
            } else {
268
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
8
                        operation>::template TypeTraits<Element>::ResultType;
271
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
8
                    if constexpr (is_decimal(Element)) {
275
8
                        return ColVecResultType::create(0, column->get_scale());
276
8
                    } else {
277
8
                        return ColVecResultType::create();
278
8
                    }
279
8
                };
280
281
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
8
                        res_ptr, type, data, offsets, create_column);
283
8
            }
284
8
        }
285
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
6
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
6
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
6
            } else {
268
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
6
                        operation>::template TypeTraits<Element>::ResultType;
271
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
6
                    if constexpr (is_decimal(Element)) {
275
6
                        return ColVecResultType::create(0, column->get_scale());
276
6
                    } else {
277
6
                        return ColVecResultType::create();
278
6
                    }
279
6
                };
280
281
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
6
                        res_ptr, type, data, offsets, create_column);
283
6
            }
284
6
        }
285
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
4
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
4
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
4
            } else {
268
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
4
                        operation>::template TypeTraits<Element>::ResultType;
271
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
4
                    if constexpr (is_decimal(Element)) {
275
4
                        return ColVecResultType::create(0, column->get_scale());
276
4
                    } else {
277
4
                        return ColVecResultType::create();
278
4
                    }
279
4
                };
280
281
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
4
                        res_ptr, type, data, offsets, create_column);
283
4
            }
284
4
        }
285
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
2
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
2
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
2
            } else {
268
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
2
                        operation>::template TypeTraits<Element>::ResultType;
271
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
2
                    if constexpr (is_decimal(Element)) {
275
2
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
280
281
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
2
                        res_ptr, type, data, offsets, create_column);
283
2
            }
284
2
        }
285
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
18
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
18
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
18
            } else {
268
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
18
                        operation>::template TypeTraits<Element>::ResultType;
271
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
18
                    if constexpr (is_decimal(Element)) {
275
18
                        return ColVecResultType::create(0, column->get_scale());
276
18
                    } else {
277
18
                        return ColVecResultType::create();
278
18
                    }
279
18
                };
280
281
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
18
                        res_ptr, type, data, offsets, create_column);
283
18
            }
284
18
        }
285
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
16
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
16
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
16
            } else {
268
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
16
                        operation>::template TypeTraits<Element>::ResultType;
271
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
16
                    if constexpr (is_decimal(Element)) {
275
16
                        return ColVecResultType::create(0, column->get_scale());
276
16
                    } else {
277
16
                        return ColVecResultType::create();
278
16
                    }
279
16
                };
280
281
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
16
                        res_ptr, type, data, offsets, create_column);
283
16
            }
284
16
        }
285
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
12
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
12
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
12
            } else {
268
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
12
                        operation>::template TypeTraits<Element>::ResultType;
271
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
12
                    if constexpr (is_decimal(Element)) {
275
12
                        return ColVecResultType::create(0, column->get_scale());
276
12
                    } else {
277
12
                        return ColVecResultType::create();
278
12
                    }
279
12
                };
280
281
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
12
                        res_ptr, type, data, offsets, create_column);
283
12
            }
284
12
        }
285
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
8
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
8
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
8
            } else {
268
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
8
                        operation>::template TypeTraits<Element>::ResultType;
271
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
8
                    if constexpr (is_decimal(Element)) {
275
8
                        return ColVecResultType::create(0, column->get_scale());
276
8
                    } else {
277
8
                        return ColVecResultType::create();
278
8
                    }
279
8
                };
280
281
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
8
                        res_ptr, type, data, offsets, create_column);
283
8
            }
284
8
        }
285
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
6
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
6
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
6
            } else {
268
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
6
                        operation>::template TypeTraits<Element>::ResultType;
271
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
6
                    if constexpr (is_decimal(Element)) {
275
6
                        return ColVecResultType::create(0, column->get_scale());
276
6
                    } else {
277
6
                        return ColVecResultType::create();
278
6
                    }
279
6
                };
280
281
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
6
                        res_ptr, type, data, offsets, create_column);
283
6
            }
284
6
        }
285
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
4
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
4
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
4
            } else {
268
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
4
                        operation>::template TypeTraits<Element>::ResultType;
271
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
4
                    if constexpr (is_decimal(Element)) {
275
4
                        return ColVecResultType::create(0, column->get_scale());
276
4
                    } else {
277
4
                        return ColVecResultType::create();
278
4
                    }
279
4
                };
280
281
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
4
                        res_ptr, type, data, offsets, create_column);
283
4
            }
284
4
        }
285
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
2
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
2
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
2
            } else {
268
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
2
                        operation>::template TypeTraits<Element>::ResultType;
271
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
2
                    if constexpr (is_decimal(Element)) {
275
2
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
280
281
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
2
                        res_ptr, type, data, offsets, create_column);
283
2
            }
284
2
        }
285
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
18
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
18
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
18
            } else {
268
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
18
                        operation>::template TypeTraits<Element>::ResultType;
271
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
18
                    if constexpr (is_decimal(Element)) {
275
18
                        return ColVecResultType::create(0, column->get_scale());
276
18
                    } else {
277
18
                        return ColVecResultType::create();
278
18
                    }
279
18
                };
280
281
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
18
                        res_ptr, type, data, offsets, create_column);
283
18
            }
284
18
        }
285
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
16
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
16
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
16
            } else {
268
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
16
                        operation>::template TypeTraits<Element>::ResultType;
271
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
16
                    if constexpr (is_decimal(Element)) {
275
16
                        return ColVecResultType::create(0, column->get_scale());
276
16
                    } else {
277
16
                        return ColVecResultType::create();
278
16
                    }
279
16
                };
280
281
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
16
                        res_ptr, type, data, offsets, create_column);
283
16
            }
284
16
        }
285
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
14
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
14
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
14
            } else {
268
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
14
                        operation>::template TypeTraits<Element>::ResultType;
271
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
14
                    if constexpr (is_decimal(Element)) {
275
14
                        return ColVecResultType::create(0, column->get_scale());
276
14
                    } else {
277
14
                        return ColVecResultType::create();
278
14
                    }
279
14
                };
280
281
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
14
                        res_ptr, type, data, offsets, create_column);
283
14
            }
284
14
        }
285
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
12
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
12
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
12
            } else {
268
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
12
                        operation>::template TypeTraits<Element>::ResultType;
271
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
12
                    if constexpr (is_decimal(Element)) {
275
12
                        return ColVecResultType::create(0, column->get_scale());
276
12
                    } else {
277
12
                        return ColVecResultType::create();
278
12
                    }
279
12
                };
280
281
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
12
                        res_ptr, type, data, offsets, create_column);
283
12
            }
284
12
        }
285
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
10
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
10
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
10
            } else {
268
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
10
                        operation>::template TypeTraits<Element>::ResultType;
271
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
10
                    if constexpr (is_decimal(Element)) {
275
10
                        return ColVecResultType::create(0, column->get_scale());
276
10
                    } else {
277
10
                        return ColVecResultType::create();
278
10
                    }
279
10
                };
280
281
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
10
                        res_ptr, type, data, offsets, create_column);
283
10
            }
284
10
        }
285
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
8
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
8
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
8
            } else {
268
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
8
                        operation>::template TypeTraits<Element>::ResultType;
271
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
8
                    if constexpr (is_decimal(Element)) {
275
8
                        return ColVecResultType::create(0, column->get_scale());
276
8
                    } else {
277
8
                        return ColVecResultType::create();
278
8
                    }
279
8
                };
280
281
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
8
                        res_ptr, type, data, offsets, create_column);
283
8
            }
284
8
        }
285
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
6
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
6
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
6
            } else {
268
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
6
                        operation>::template TypeTraits<Element>::ResultType;
271
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
6
                    if constexpr (is_decimal(Element)) {
275
6
                        return ColVecResultType::create(0, column->get_scale());
276
6
                    } else {
277
6
                        return ColVecResultType::create();
278
6
                    }
279
6
                };
280
281
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
6
                        res_ptr, type, data, offsets, create_column);
283
6
            }
284
6
        }
285
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
4
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
4
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
4
            } else {
268
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
4
                        operation>::template TypeTraits<Element>::ResultType;
271
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
4
                    if constexpr (is_decimal(Element)) {
275
4
                        return ColVecResultType::create(0, column->get_scale());
276
4
                    } else {
277
4
                        return ColVecResultType::create();
278
4
                    }
279
4
                };
280
281
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
4
                        res_ptr, type, data, offsets, create_column);
283
4
            }
284
4
        }
285
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
247
2
                             const ColumnArray::Offsets64& offsets) {
248
        if constexpr (is_string_type(Element)) {
249
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
250
                operation == AggregateOperation::AVERAGE) {
251
                return false;
252
            }
253
254
            auto create_column = [](const ColumnString*) -> ColumnPtr {
255
                return ColumnString::create();
256
            };
257
258
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
259
                                                                            offsets, create_column);
260
2
        } else {
261
            if constexpr ((operation == AggregateOperation::SUM ||
262
                           operation == AggregateOperation::PRODUCT ||
263
                           operation == AggregateOperation::AVERAGE) &&
264
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
265
                           is_decimalv3(Element))) {
266
                return false;
267
2
            } else {
268
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
269
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
270
2
                        operation>::template TypeTraits<Element>::ResultType;
271
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
272
273
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
274
2
                    if constexpr (is_decimal(Element)) {
275
2
                        return ColVecResultType::create(0, column->get_scale());
276
2
                    } else {
277
2
                        return ColVecResultType::create();
278
2
                    }
279
2
                };
280
281
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
282
2
                        res_ptr, type, data, offsets, create_column);
283
2
            }
284
2
        }
285
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
286
};
287
288
struct NameArrayMin {
289
    static constexpr auto name = "array_min";
290
};
291
292
template <>
293
struct ArrayAggregateFunctionCreator<AggregateOperation::MIN,
294
                                     AggregateFunctionTraits<AggregateOperation::MIN>> {
295
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
296
36
            -> AggregateFunctionPtr {
297
36
        return create_aggregate_function_single_value<AggregateFunctionMinData>(
298
36
                NameArrayMin::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
299
36
                true, attr);
300
36
    }
301
};
302
303
struct NameArrayMax {
304
    static constexpr auto name = "array_max";
305
};
306
307
template <>
308
struct ArrayAggregateFunctionCreator<AggregateOperation::MAX,
309
                                     AggregateFunctionTraits<AggregateOperation::MAX>> {
310
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
311
36
            -> AggregateFunctionPtr {
312
36
        return create_aggregate_function_single_value<AggregateFunctionMaxData>(
313
36
                NameArrayMax::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
314
36
                true, attr);
315
36
    }
316
};
317
318
struct NameArraySum {
319
    static constexpr auto name = "array_sum";
320
};
321
322
struct NameArrayAverage {
323
    static constexpr auto name = "array_avg";
324
};
325
struct NameArrayProduct {
326
    static constexpr auto name = "array_product";
327
};
328
329
using FunctionArrayMin =
330
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MIN>, NameArrayMin>;
331
using FunctionArrayMax =
332
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MAX>, NameArrayMax>;
333
using FunctionArraySum =
334
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::SUM>, NameArraySum>;
335
using FunctionArrayAverage =
336
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::AVERAGE>, NameArrayAverage>;
337
using FunctionArrayProduct =
338
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::PRODUCT>, NameArrayProduct>;
339
340
using FunctionArrayJoin = FunctionArrayMapped<ArrayJoinImpl, NameArrayJoin>;
341
342
template <AggregateOperation operation>
343
struct AggregateFunctionTraitsWithResultType;
344
345
template <>
346
struct AggregateFunctionTraitsWithResultType<AggregateOperation::SUM> {
347
    template <PrimitiveType InputType, PrimitiveType ResultType>
348
    struct TypeTraits {
349
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
350
        using Function = AggregateFunctionSum<InputType, ResultType, AggregateDataType>;
351
    };
352
};
353
template <>
354
struct AggregateFunctionTraitsWithResultType<AggregateOperation::AVERAGE> {
355
    template <PrimitiveType InputType, PrimitiveType ResultType>
356
    struct TypeTraits {
357
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
358
        using Function = AggregateFunctionAvg<InputType, ResultType, AggregateDataType>;
359
    };
360
};
361
template <>
362
struct AggregateFunctionTraitsWithResultType<AggregateOperation::PRODUCT> {
363
    template <PrimitiveType InputType, PrimitiveType ResultType>
364
    struct TypeTraits {
365
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
366
        using Function = AggregateFunctionProduct<InputType, ResultType, AggregateDataType>;
367
    };
368
};
369
template <typename Derived>
370
struct ArrayAggregateFunctionCreatorWithResultType {
371
    template <PrimitiveType InputType, PrimitiveType ResultType>
372
    using Function = typename Derived::template TypeTraits<InputType, ResultType>::Function;
373
374
    static auto create(const DataTypePtr& data_type_ptr, const DataTypePtr& result_type_ptr,
375
0
                       const AggregateFunctionAttr& attr) -> AggregateFunctionPtr {
376
0
        return creator_with_type_list<
377
0
                TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
378
0
                TYPE_DECIMAL256>::creator_with_result_type<Function>("",
379
0
                                                                     DataTypes {make_nullable(
380
0
                                                                             data_type_ptr)},
381
0
                                                                     result_type_ptr, true, attr);
382
0
    }
Unexecuted instantiation: _ZN5doris43ArrayAggregateFunctionCreatorWithResultTypeINS_37AggregateFunctionTraitsWithResultTypeILNS_18AggregateOperationE2EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEESA_RKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris43ArrayAggregateFunctionCreatorWithResultTypeINS_37AggregateFunctionTraitsWithResultTypeILNS_18AggregateOperationE3EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEESA_RKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris43ArrayAggregateFunctionCreatorWithResultTypeINS_37AggregateFunctionTraitsWithResultTypeILNS_18AggregateOperationE4EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEESA_RKNS_21AggregateFunctionAttrE
383
};
384
template <AggregateOperation operation, PrimitiveType ResultType>
385
struct ArrayAggregateImplDecimalV3;
386
template <AggregateOperation operation, PrimitiveType ResultType>
387
    requires(operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
388
             operation == AggregateOperation::AVERAGE)
389
struct ArrayAggregateImplDecimalV3<operation, ResultType> {
390
    using column_type = ColumnArray;
391
    using data_type = DataTypeArray;
392
393
0
    static bool _is_variadic() { return false; }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12_is_variadicEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12_is_variadicEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12_is_variadicEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12_is_variadicEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12_is_variadicEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12_is_variadicEv
394
395
0
    static size_t _get_number_of_arguments() { return 1; }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE24_get_number_of_argumentsEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE24_get_number_of_argumentsEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE24_get_number_of_argumentsEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE24_get_number_of_argumentsEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE24_get_number_of_argumentsEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE24_get_number_of_argumentsEv
396
397
0
    static bool skip_return_type_check() { return true; }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE22skip_return_type_checkEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE22skip_return_type_checkEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE22skip_return_type_checkEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE22skip_return_type_checkEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE22skip_return_type_checkEv
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE22skip_return_type_checkEv
398
399
0
    static DataTypePtr get_return_type(const DataTypes& arguments) {
400
0
        throw doris::Exception(
401
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
402
0
                "get_return_type is not implemented for ArrayAggregateImplDecimalV3");
403
0
        __builtin_unreachable();
404
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS8_EE
405
406
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
407
                          const DataTypePtr& result_type, const DataTypeArray* data_type_array,
408
0
                          const ColumnArray& array) {
409
0
        ColumnPtr res;
410
0
        DataTypePtr type = data_type_array->get_nested_type();
411
0
        const IColumn* data = array.get_data_ptr().get();
412
413
0
        const auto& offsets = array.get_offsets();
414
415
0
        if (execute_type<TYPE_DECIMAL32>(res, result_type, type, data, offsets) ||
416
0
            execute_type<TYPE_DECIMAL64>(res, result_type, type, data, offsets) ||
417
0
            execute_type<TYPE_DECIMAL128I>(res, result_type, type, data, offsets) ||
418
0
            execute_type<TYPE_DECIMAL256>(res, result_type, type, data, offsets)) {
419
0
            block.replace_by_position(result, std::move(res));
420
0
            return Status::OK();
421
0
        } else {
422
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
423
0
        }
424
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjRKSt10shared_ptrIKNS_9IDataTypeEEPKNS_13DataTypeArrayERKNS_11ColumnArrayE
425
426
    template <typename ColumnType, typename CreateColumnFunc>
427
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& result_type,
428
                                  const DataTypePtr& type, const IColumn* data,
429
                                  const ColumnArray::Offsets64& offsets,
430
0
                                  CreateColumnFunc create_column_func) {
431
0
        using Function = ArrayAggregateFunctionCreatorWithResultType<
432
0
                AggregateFunctionTraitsWithResultType<operation>>;
433
434
0
        const ColumnType* column =
435
0
                is_column_nullable(*data)
436
0
                        ? check_and_get_column<ColumnType>(
437
0
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
438
0
                        : check_and_get_column<ColumnType>(&*data);
439
0
        if (!column) {
440
0
            return false;
441
0
        }
442
443
0
        ColumnPtr res_column = create_column_func(column);
444
0
        res_column = make_nullable(res_column);
445
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
446
447
0
        auto function = Function::create(type, result_type,
448
0
                                         {.is_window_function = false, .column_names = {}});
449
0
        auto guard = AggregateFunctionGuard(function.get());
450
0
        Arena arena;
451
0
        auto nullable_column = make_nullable(data->get_ptr());
452
0
        const IColumn* columns[] = {nullable_column.get()};
453
0
        function->check_input_columns_type(columns);
454
0
        function->check_result_column_type(*res_column);
455
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
456
0
            auto start = offsets[i - 1]; // -1 is ok.
457
0
            auto end = offsets[i];
458
0
            bool is_empty = (start == end);
459
0
            if (is_empty) {
460
0
                res_column->assert_mutable()->insert_default();
461
0
                continue;
462
0
            }
463
0
            function->reset(guard.data());
464
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
465
0
                                      is_column_nullable(*data));
466
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
467
0
        }
468
0
        res_ptr = std::move(res_column);
469
0
        return true;
470
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
471
472
    template <PrimitiveType Element>
473
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& result_type,
474
                             const DataTypePtr& type, const IColumn* data,
475
0
                             const ColumnArray::Offsets64& offsets) {
476
0
        using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
477
0
        using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
478
479
0
        auto create_column = [](const ColVecType* column) -> ColumnPtr {
480
0
            return ColVecResultType::create(0, column->get_scale());
481
0
        };
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
482
483
0
        return execute_type_impl<ColVecType, decltype(create_column)>(res_ptr, result_type, type,
484
0
                                                                      data, offsets, create_column);
485
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
486
};
487
488
template <typename Impl, typename Name>
489
class FunctionArrayAggDecimalV3 : public IFunction {
490
public:
491
    static constexpr auto name = Name::name;
492
    explicit FunctionArrayAggDecimalV3(DataTypePtr result_type)
493
0
            : _result_type(std::move(result_type)) {}
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEEC2ESt10shared_ptrIKNS_9IDataTypeEE
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEEC2ESt10shared_ptrIKNS_9IDataTypeEE
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEEC2ESt10shared_ptrIKNS_9IDataTypeEE
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEEC2ESt10shared_ptrIKNS_9IDataTypeEE
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEEC2ESt10shared_ptrIKNS_9IDataTypeEE
Unexecuted instantiation: _ZN5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEEC2ESt10shared_ptrIKNS_9IDataTypeEE
494
495
0
    String get_name() const override { return name; }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE8get_nameB5cxx11Ev
496
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
497
0
                        uint32_t result, size_t input_rows_count) const override {
498
0
        const auto& typed_column = block.get_by_position(arguments[0]);
499
0
        auto ptr = typed_column.column->convert_to_full_column_if_const();
500
0
        const typename Impl::column_type* column_array;
501
0
        if (is_column_nullable(*ptr)) {
502
0
            column_array = assert_cast<const typename Impl::column_type*>(
503
0
                    assert_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
504
0
        } else {
505
0
            column_array = assert_cast<const typename Impl::column_type*>(ptr.get());
506
0
        }
507
0
        const auto* data_type_array =
508
0
                assert_cast<const DataTypeArray*>(remove_nullable(typed_column.type).get());
509
0
        return Impl::execute(block, arguments, result, _result_type, data_type_array,
510
0
                             *column_array);
511
0
    }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE12execute_implEPNS_15FunctionContextERNS_5BlockERKSt6vectorIjSaIjEEjm
512
513
0
    bool is_variadic() const override { return Impl::_is_variadic(); }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE11is_variadicEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE11is_variadicEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE11is_variadicEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE11is_variadicEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE11is_variadicEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE11is_variadicEv
514
515
0
    size_t get_number_of_arguments() const override { return Impl::_get_number_of_arguments(); }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE23get_number_of_argumentsEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE23get_number_of_argumentsEv
516
517
0
    bool skip_return_type_check() const override { return Impl::skip_return_type_check(); }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE22skip_return_type_checkEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE22skip_return_type_checkEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE22skip_return_type_checkEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE22skip_return_type_checkEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE22skip_return_type_checkEv
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE22skip_return_type_checkEv
518
519
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
520
0
        return Impl::get_return_type(arguments);
521
0
    }
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EEENS_12NameArraySumEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EEENS_12NameArraySumEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EEENS_16NameArrayAverageEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EEENS_16NameArrayAverageEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EEENS_16NameArrayProductEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
Unexecuted instantiation: _ZNK5doris25FunctionArrayAggDecimalV3INS_27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EEENS_16NameArrayProductEE20get_return_type_implERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISB_EE
522
523
private:
524
    DataTypePtr _result_type;
525
};
526
template <PrimitiveType ResultType>
527
struct ArraySumDecimalV3Attributes {
528
    static_assert(is_decimalv3(ResultType));
529
    using AggregateDataType = AggregateFunctionSumData<ResultType>;
530
    using Function = FunctionArrayAggDecimalV3<
531
            ArrayAggregateImplDecimalV3<AggregateOperation::SUM, ResultType>, NameArraySum>;
532
};
533
template <PrimitiveType ResultType>
534
using ArraySumDecimalV3 = typename ArraySumDecimalV3Attributes<ResultType>::Function;
535
536
template <PrimitiveType ResultType>
537
struct ArrayAvgDecimalV3Attributes {
538
    static_assert(is_decimalv3(ResultType));
539
    using AggregateDataType = AggregateFunctionAvgData<ResultType>;
540
    using Function = FunctionArrayAggDecimalV3<
541
            ArrayAggregateImplDecimalV3<AggregateOperation::AVERAGE, ResultType>, NameArrayAverage>;
542
};
543
template <PrimitiveType ResultType>
544
using ArrayAvgDecimalV3 = typename ArrayAvgDecimalV3Attributes<ResultType>::Function;
545
546
template <PrimitiveType ResultType>
547
struct ArrayProductDecimalV3Attributes {
548
    static_assert(is_decimalv3(ResultType));
549
    using AggregateDataType = AggregateFunctionProductData<ResultType>;
550
    using Function = FunctionArrayAggDecimalV3<
551
            ArrayAggregateImplDecimalV3<AggregateOperation::PRODUCT, ResultType>, NameArrayProduct>;
552
};
553
template <PrimitiveType ResultType>
554
using ArrayProductDecimalV3 = typename ArrayProductDecimalV3Attributes<ResultType>::Function;
555
1
void register_array_reduce_agg_functions(SimpleFunctionFactory& factory) {
556
1
    {
557
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
558
14
            if (is_decimalv3(result_type->get_primitive_type())) {
559
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
560
0
                        ArraySumDecimalV3>(result_type);
561
14
            } else {
562
14
                FunctionBuilderPtr func =
563
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArraySum::create());
564
14
                return func;
565
14
            }
566
14
        };
567
1
        factory.register_array_agg_function(NameArraySum::name, creator);
568
1
    }
569
1
    {
570
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
571
14
            if (is_decimalv3(result_type->get_primitive_type())) {
572
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
573
0
                        ArrayAvgDecimalV3>(result_type);
574
14
            } else {
575
14
                FunctionBuilderPtr func =
576
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayAverage::create());
577
14
                return func;
578
14
            }
579
14
        };
580
1
        factory.register_array_agg_function(NameArrayAverage::name, creator);
581
1
    }
582
1
    {
583
10
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
584
10
            if (is_decimalv3(result_type->get_primitive_type())) {
585
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
586
0
                        ArrayProductDecimalV3>(result_type);
587
10
            } else {
588
10
                FunctionBuilderPtr func =
589
10
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayProduct::create());
590
10
                return func;
591
10
            }
592
10
        };
593
1
        factory.register_array_agg_function(NameArrayProduct::name, creator);
594
1
    }
595
1
}
596
597
1
void register_function_array_aggregation(SimpleFunctionFactory& factory) {
598
1
    factory.register_function<FunctionArrayMin>();
599
1
    factory.register_function<FunctionArrayMax>();
600
1
    factory.register_function<FunctionArrayJoin>();
601
1
    register_array_reduce_agg_functions(factory);
602
1
}
603
604
} // namespace doris