Coverage Report

Created: 2026-10-10 19:06

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
        // Add up the values in the same type as avg(). A double sum loses digits of large integers.
94
        using AggregateDataType = AggregateFunctionAvgData<avg_sum_type(Element)>;
95
        using Function = AggregateFunctionAvg<Element, ResultType, AggregateDataType>;
96
        static_assert(std::is_same_v<typename PrimitiveTypeTraits<ResultType>::CppType,
97
                                     typename Function::ResultType>,
98
                      "ResultType doesn't match.");
99
    };
100
};
101
102
template <>
103
struct AggregateFunctionTraits<AggregateOperation::PRODUCT> {
104
    template <PrimitiveType Element>
105
    struct TypeTraits {
106
        static constexpr PrimitiveType ResultType =
107
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : Element;
108
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
109
        using Function = AggregateFunctionProduct<Element, ResultType, AggregateDataType>;
110
    };
111
};
112
113
template <AggregateOperation AggOp, typename Derived>
114
struct ArrayAggregateFunctionCreator {
115
    template <PrimitiveType T>
116
    using Function = typename Derived::template TypeTraits<T>::Function;
117
118
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
119
80
            -> AggregateFunctionPtr {
120
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
121
            return creator_with_type_list<
122
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
123
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
124
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
125
                                                       true, attr);
126
80
        } else {
127
80
            return creator_with_type_list<
128
80
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
129
80
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
130
80
                                                   attr);
131
80
        }
132
80
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE2ENS_23AggregateFunctionTraitsILS1_2EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
119
28
            -> AggregateFunctionPtr {
120
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
121
            return creator_with_type_list<
122
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
123
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
124
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
125
                                                       true, attr);
126
28
        } else {
127
28
            return creator_with_type_list<
128
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
129
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
130
28
                                                   attr);
131
28
        }
132
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE3ENS_23AggregateFunctionTraitsILS1_3EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
119
32
            -> AggregateFunctionPtr {
120
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
121
            return creator_with_type_list<
122
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
123
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
124
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
125
                                                       true, attr);
126
32
        } else {
127
32
            return creator_with_type_list<
128
32
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
129
32
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
130
32
                                                   attr);
131
32
        }
132
32
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE4ENS_23AggregateFunctionTraitsILS1_4EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
119
20
            -> AggregateFunctionPtr {
120
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
121
            return creator_with_type_list<
122
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
123
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
124
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
125
                                                       true, attr);
126
20
        } else {
127
20
            return creator_with_type_list<
128
20
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
129
20
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
130
20
                                                   attr);
131
20
        }
132
20
    }
133
};
134
135
template <AggregateOperation operation>
136
struct ArrayAggregateImpl {
137
    using column_type = ColumnArray;
138
    using data_type = DataTypeArray;
139
140
78
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12_is_variadicEv
Line
Count
Source
140
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12_is_variadicEv
Line
Count
Source
140
16
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12_is_variadicEv
Line
Count
Source
140
10
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12_is_variadicEv
Line
Count
Source
140
19
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12_is_variadicEv
Line
Count
Source
140
19
    static bool _is_variadic() { return false; }
141
142
76
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE24_get_number_of_argumentsEv
Line
Count
Source
142
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE24_get_number_of_argumentsEv
Line
Count
Source
142
16
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE24_get_number_of_argumentsEv
Line
Count
Source
142
10
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE24_get_number_of_argumentsEv
Line
Count
Source
142
18
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE24_get_number_of_argumentsEv
Line
Count
Source
142
18
    static size_t _get_number_of_arguments() { return 1; }
143
144
    static bool skip_return_type_check() { return false; }
145
146
76
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
76
        using Function =
148
76
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
76
        const DataTypeArray* data_type_array =
150
76
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
76
        auto function = Function::create(data_type_array->get_nested_type(),
152
76
                                         {.is_window_function = false, .column_names = {}});
153
76
        if (function) {
154
76
            return function->get_return_type();
155
76
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
76
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
146
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
14
        using Function =
148
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
14
        const DataTypeArray* data_type_array =
150
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
14
        auto function = Function::create(data_type_array->get_nested_type(),
152
14
                                         {.is_window_function = false, .column_names = {}});
153
14
        if (function) {
154
14
            return function->get_return_type();
155
14
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
146
16
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
16
        using Function =
148
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
16
        const DataTypeArray* data_type_array =
150
16
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
16
        auto function = Function::create(data_type_array->get_nested_type(),
152
16
                                         {.is_window_function = false, .column_names = {}});
153
16
        if (function) {
154
16
            return function->get_return_type();
155
16
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
146
10
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
10
        using Function =
148
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
10
        const DataTypeArray* data_type_array =
150
10
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
10
        auto function = Function::create(data_type_array->get_nested_type(),
152
10
                                         {.is_window_function = false, .column_names = {}});
153
10
        if (function) {
154
10
            return function->get_return_type();
155
10
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
146
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
18
        using Function =
148
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
18
        const DataTypeArray* data_type_array =
150
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
18
        auto function = Function::create(data_type_array->get_nested_type(),
152
18
                                         {.is_window_function = false, .column_names = {}});
153
18
        if (function) {
154
18
            return function->get_return_type();
155
18
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
146
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
147
18
        using Function =
148
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
149
18
        const DataTypeArray* data_type_array =
150
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
151
18
        auto function = Function::create(data_type_array->get_nested_type(),
152
18
                                         {.is_window_function = false, .column_names = {}});
153
18
        if (function) {
154
18
            return function->get_return_type();
155
18
        } else {
156
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
157
0
                                   "Unexpected type {} for aggregation {}",
158
0
                                   data_type_array->get_nested_type()->get_name(), operation);
159
0
        }
160
18
    }
161
162
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
163
76
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
76
        ColumnPtr res;
165
76
        DataTypePtr type = data_type_array->get_nested_type();
166
76
        const IColumn* data = array.get_data_ptr().get();
167
168
76
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
36
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
36
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
36
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
36
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
8
                block.replace_by_position(result, std::move(res));
176
8
                return Status::OK();
177
8
            }
178
36
        }
179
180
76
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
76
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
76
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
76
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
76
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
76
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
76
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
76
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
76
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
76
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
76
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
76
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
76
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
76
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
76
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
76
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
76
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
68
            block.replace_by_position(result, std::move(res));
198
68
            return Status::OK();
199
68
        } else {
200
8
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
8
        }
202
76
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
163
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
14
        ColumnPtr res;
165
14
        DataTypePtr type = data_type_array->get_nested_type();
166
14
        const IColumn* data = array.get_data_ptr().get();
167
168
14
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
                block.replace_by_position(result, std::move(res));
176
                return Status::OK();
177
            }
178
        }
179
180
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
14
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
14
            block.replace_by_position(result, std::move(res));
198
14
            return Status::OK();
199
14
        } else {
200
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
0
        }
202
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
163
16
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
16
        ColumnPtr res;
165
16
        DataTypePtr type = data_type_array->get_nested_type();
166
16
        const IColumn* data = array.get_data_ptr().get();
167
168
16
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
                block.replace_by_position(result, std::move(res));
176
                return Status::OK();
177
            }
178
        }
179
180
16
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
16
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
16
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
16
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
16
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
16
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
16
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
16
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
16
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
16
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
16
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
16
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
16
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
16
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
16
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
16
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
16
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
16
            block.replace_by_position(result, std::move(res));
198
16
            return Status::OK();
199
16
        } else {
200
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
0
        }
202
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
163
10
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
10
        ColumnPtr res;
165
10
        DataTypePtr type = data_type_array->get_nested_type();
166
10
        const IColumn* data = array.get_data_ptr().get();
167
168
10
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
                block.replace_by_position(result, std::move(res));
176
                return Status::OK();
177
            }
178
        }
179
180
10
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
10
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
10
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
10
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
10
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
10
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
10
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
10
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
10
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
10
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
10
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
10
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
10
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
10
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
10
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
10
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
10
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
10
            block.replace_by_position(result, std::move(res));
198
10
            return Status::OK();
199
10
        } else {
200
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
0
        }
202
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
163
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
18
        ColumnPtr res;
165
18
        DataTypePtr type = data_type_array->get_nested_type();
166
18
        const IColumn* data = array.get_data_ptr().get();
167
168
18
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
18
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
18
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
18
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
4
                block.replace_by_position(result, std::move(res));
176
4
                return Status::OK();
177
4
            }
178
18
        }
179
180
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
14
            block.replace_by_position(result, std::move(res));
198
14
            return Status::OK();
199
14
        } else {
200
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
4
        }
202
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
163
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
164
18
        ColumnPtr res;
165
18
        DataTypePtr type = data_type_array->get_nested_type();
166
18
        const IColumn* data = array.get_data_ptr().get();
167
168
18
        const auto& offsets = array.get_offsets();
169
        if constexpr (operation == AggregateOperation::MAX ||
170
18
                      operation == AggregateOperation::MIN) {
171
            // These fixed-width non-numeric types support min/max only.
172
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
173
18
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
174
18
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
175
4
                block.replace_by_position(result, std::move(res));
176
4
                return Status::OK();
177
4
            }
178
18
        }
179
180
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
195
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
196
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
197
14
            block.replace_by_position(result, std::move(res));
198
14
            return Status::OK();
199
14
        } else {
200
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
201
4
        }
202
18
    }
203
204
    template <typename ColumnType, typename CreateColumnFunc>
205
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
206
                                  const ColumnArray::Offsets64& offsets,
207
447
                                  CreateColumnFunc create_column_func) {
208
447
        using Function =
209
447
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
447
        const ColumnType* column =
212
447
                is_column_nullable(*data)
213
447
                        ? check_and_get_column<ColumnType>(
214
447
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
447
                        : check_and_get_column<ColumnType>(&*data);
216
447
        if (!column) {
217
371
            return false;
218
371
        }
219
220
76
        ColumnPtr res_column = create_column_func(column);
221
76
        res_column = make_nullable(res_column);
222
76
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
76
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
76
        auto guard = AggregateFunctionGuard(function.get());
226
76
        Arena arena;
227
76
        auto nullable_column = make_nullable(data->get_ptr());
228
76
        const IColumn* columns[] = {nullable_column.get()};
229
76
        function->check_input_columns_type(columns);
230
76
        function->check_result_column_type(*res_column);
231
263
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
187
            auto start = offsets[i - 1]; // -1 is ok.
233
187
            auto end = offsets[i];
234
187
            bool is_empty = (start == end);
235
187
            if (is_empty) {
236
74
                res_column->assert_mutable()->insert_default();
237
74
                continue;
238
74
            }
239
113
            function->reset(guard.data());
240
113
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
113
                                      is_column_nullable(*data));
242
113
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
113
        }
244
76
        res_ptr = std::move(res_column);
245
76
        return true;
246
447
    }
_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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
14
            return false;
218
14
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
12
            return false;
218
12
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
12
                                  CreateColumnFunc create_column_func) {
208
12
        using Function =
209
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
12
        const ColumnType* column =
212
12
                is_column_nullable(*data)
213
12
                        ? check_and_get_column<ColumnType>(
214
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
12
                        : check_and_get_column<ColumnType>(&*data);
216
12
        if (!column) {
217
10
            return false;
218
10
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
8
            return false;
218
8
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
8
                                  CreateColumnFunc create_column_func) {
208
8
        using Function =
209
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
8
        const ColumnType* column =
212
8
                is_column_nullable(*data)
213
8
                        ? check_and_get_column<ColumnType>(
214
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
8
                        : check_and_get_column<ColumnType>(&*data);
216
8
        if (!column) {
217
6
            return false;
218
6
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
6
                                  CreateColumnFunc create_column_func) {
208
6
        using Function =
209
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
6
        const ColumnType* column =
212
6
                is_column_nullable(*data)
213
6
                        ? check_and_get_column<ColumnType>(
214
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
6
                        : check_and_get_column<ColumnType>(&*data);
216
6
        if (!column) {
217
4
            return false;
218
4
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
4
                                  CreateColumnFunc create_column_func) {
208
4
        using Function =
209
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
4
        const ColumnType* column =
212
4
                is_column_nullable(*data)
213
4
                        ? check_and_get_column<ColumnType>(
214
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
4
                        : check_and_get_column<ColumnType>(&*data);
216
4
        if (!column) {
217
2
            return false;
218
2
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
2
                                  CreateColumnFunc create_column_func) {
208
2
        using Function =
209
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
2
        const ColumnType* column =
212
2
                is_column_nullable(*data)
213
2
                        ? check_and_get_column<ColumnType>(
214
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
2
                        : check_and_get_column<ColumnType>(&*data);
216
2
        if (!column) {
217
0
            return false;
218
0
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
16
                                  CreateColumnFunc create_column_func) {
208
16
        using Function =
209
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
16
        const ColumnType* column =
212
16
                is_column_nullable(*data)
213
16
                        ? check_and_get_column<ColumnType>(
214
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
16
                        : check_and_get_column<ColumnType>(&*data);
216
16
        if (!column) {
217
16
            return false;
218
16
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
16
    }
_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
207
16
                                  CreateColumnFunc create_column_func) {
208
16
        using Function =
209
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
16
        const ColumnType* column =
212
16
                is_column_nullable(*data)
213
16
                        ? check_and_get_column<ColumnType>(
214
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
16
                        : check_and_get_column<ColumnType>(&*data);
216
16
        if (!column) {
217
14
            return false;
218
14
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
16
    }
_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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
12
            return false;
218
12
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
14
    }
_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
207
12
                                  CreateColumnFunc create_column_func) {
208
12
        using Function =
209
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
12
        const ColumnType* column =
212
12
                is_column_nullable(*data)
213
12
                        ? check_and_get_column<ColumnType>(
214
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
12
                        : check_and_get_column<ColumnType>(&*data);
216
12
        if (!column) {
217
10
            return false;
218
10
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
12
    }
_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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
7
            return false;
218
7
        }
219
220
3
        ColumnPtr res_column = create_column_func(column);
221
3
        res_column = make_nullable(res_column);
222
3
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
3
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
3
        auto guard = AggregateFunctionGuard(function.get());
226
3
        Arena arena;
227
3
        auto nullable_column = make_nullable(data->get_ptr());
228
3
        const IColumn* columns[] = {nullable_column.get()};
229
3
        function->check_input_columns_type(columns);
230
3
        function->check_result_column_type(*res_column);
231
9
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
6
            auto start = offsets[i - 1]; // -1 is ok.
233
6
            auto end = offsets[i];
234
6
            bool is_empty = (start == end);
235
6
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
4
            function->reset(guard.data());
240
4
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
4
                                      is_column_nullable(*data));
242
4
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
4
        }
244
3
        res_ptr = std::move(res_column);
245
3
        return true;
246
10
    }
_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
207
7
                                  CreateColumnFunc create_column_func) {
208
7
        using Function =
209
7
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
7
        const ColumnType* column =
212
7
                is_column_nullable(*data)
213
7
                        ? check_and_get_column<ColumnType>(
214
7
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
7
                        : check_and_get_column<ColumnType>(&*data);
216
7
        if (!column) {
217
4
            return false;
218
4
        }
219
220
3
        ColumnPtr res_column = create_column_func(column);
221
3
        res_column = make_nullable(res_column);
222
3
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
3
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
3
        auto guard = AggregateFunctionGuard(function.get());
226
3
        Arena arena;
227
3
        auto nullable_column = make_nullable(data->get_ptr());
228
3
        const IColumn* columns[] = {nullable_column.get()};
229
3
        function->check_input_columns_type(columns);
230
3
        function->check_result_column_type(*res_column);
231
9
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
6
            auto start = offsets[i - 1]; // -1 is ok.
233
6
            auto end = offsets[i];
234
6
            bool is_empty = (start == end);
235
6
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
4
            function->reset(guard.data());
240
4
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
4
                                      is_column_nullable(*data));
242
4
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
4
        }
244
3
        res_ptr = std::move(res_column);
245
3
        return true;
246
7
    }
_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
207
4
                                  CreateColumnFunc create_column_func) {
208
4
        using Function =
209
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
4
        const ColumnType* column =
212
4
                is_column_nullable(*data)
213
4
                        ? check_and_get_column<ColumnType>(
214
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
4
                        : check_and_get_column<ColumnType>(&*data);
216
4
        if (!column) {
217
2
            return false;
218
2
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
2
                                  CreateColumnFunc create_column_func) {
208
2
        using Function =
209
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
2
        const ColumnType* column =
212
2
                is_column_nullable(*data)
213
2
                        ? check_and_get_column<ColumnType>(
214
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
2
                        : check_and_get_column<ColumnType>(&*data);
216
2
        if (!column) {
217
0
            return false;
218
0
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
10
            return false;
218
10
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
10
            return false;
218
10
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
10
            return false;
218
10
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
8
            return false;
218
8
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
8
                                  CreateColumnFunc create_column_func) {
208
8
        using Function =
209
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
8
        const ColumnType* column =
212
8
                is_column_nullable(*data)
213
8
                        ? check_and_get_column<ColumnType>(
214
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
8
                        : check_and_get_column<ColumnType>(&*data);
216
8
        if (!column) {
217
6
            return false;
218
6
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
6
                                  CreateColumnFunc create_column_func) {
208
6
        using Function =
209
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
6
        const ColumnType* column =
212
6
                is_column_nullable(*data)
213
6
                        ? check_and_get_column<ColumnType>(
214
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
6
                        : check_and_get_column<ColumnType>(&*data);
216
6
        if (!column) {
217
4
            return false;
218
4
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
4
                                  CreateColumnFunc create_column_func) {
208
4
        using Function =
209
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
4
        const ColumnType* column =
212
4
                is_column_nullable(*data)
213
4
                        ? check_and_get_column<ColumnType>(
214
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
4
                        : check_and_get_column<ColumnType>(&*data);
216
4
        if (!column) {
217
2
            return false;
218
2
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
2
                                  CreateColumnFunc create_column_func) {
208
2
        using Function =
209
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
2
        const ColumnType* column =
212
2
                is_column_nullable(*data)
213
2
                        ? check_and_get_column<ColumnType>(
214
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
2
                        : check_and_get_column<ColumnType>(&*data);
216
2
        if (!column) {
217
0
            return false;
218
0
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
18
                                  CreateColumnFunc create_column_func) {
208
18
        using Function =
209
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
18
        const ColumnType* column =
212
18
                is_column_nullable(*data)
213
18
                        ? check_and_get_column<ColumnType>(
214
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
18
                        : check_and_get_column<ColumnType>(&*data);
216
18
        if (!column) {
217
16
            return false;
218
16
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
16
                                  CreateColumnFunc create_column_func) {
208
16
        using Function =
209
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
16
        const ColumnType* column =
212
16
                is_column_nullable(*data)
213
16
                        ? check_and_get_column<ColumnType>(
214
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
16
                        : check_and_get_column<ColumnType>(&*data);
216
16
        if (!column) {
217
14
            return false;
218
14
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEZNS2_12execute_typeILS5_44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
14
            return false;
218
14
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
14
    }
_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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
14
            return false;
218
14
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
12
            return false;
218
12
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
12
                                  CreateColumnFunc create_column_func) {
208
12
        using Function =
209
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
12
        const ColumnType* column =
212
12
                is_column_nullable(*data)
213
12
                        ? check_and_get_column<ColumnType>(
214
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
12
                        : check_and_get_column<ColumnType>(&*data);
216
12
        if (!column) {
217
10
            return false;
218
10
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
8
            return false;
218
8
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
8
                                  CreateColumnFunc create_column_func) {
208
8
        using Function =
209
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
8
        const ColumnType* column =
212
8
                is_column_nullable(*data)
213
8
                        ? check_and_get_column<ColumnType>(
214
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
8
                        : check_and_get_column<ColumnType>(&*data);
216
8
        if (!column) {
217
6
            return false;
218
6
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
6
                                  CreateColumnFunc create_column_func) {
208
6
        using Function =
209
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
6
        const ColumnType* column =
212
6
                is_column_nullable(*data)
213
6
                        ? check_and_get_column<ColumnType>(
214
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
6
                        : check_and_get_column<ColumnType>(&*data);
216
6
        if (!column) {
217
4
            return false;
218
4
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
4
                                  CreateColumnFunc create_column_func) {
208
4
        using Function =
209
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
4
        const ColumnType* column =
212
4
                is_column_nullable(*data)
213
4
                        ? check_and_get_column<ColumnType>(
214
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
4
                        : check_and_get_column<ColumnType>(&*data);
216
4
        if (!column) {
217
2
            return false;
218
2
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
2
                                  CreateColumnFunc create_column_func) {
208
2
        using Function =
209
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
2
        const ColumnType* column =
212
2
                is_column_nullable(*data)
213
2
                        ? check_and_get_column<ColumnType>(
214
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
2
                        : check_and_get_column<ColumnType>(&*data);
216
2
        if (!column) {
217
0
            return false;
218
0
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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_13PrimitiveTypeE43EEEZNS2_12execute_typeILS5_43EEEbRNS_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
207
18
                                  CreateColumnFunc create_column_func) {
208
18
        using Function =
209
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
18
        const ColumnType* column =
212
18
                is_column_nullable(*data)
213
18
                        ? check_and_get_column<ColumnType>(
214
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
18
                        : check_and_get_column<ColumnType>(&*data);
216
18
        if (!column) {
217
16
            return false;
218
16
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
16
                                  CreateColumnFunc create_column_func) {
208
16
        using Function =
209
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
16
        const ColumnType* column =
212
16
                is_column_nullable(*data)
213
16
                        ? check_and_get_column<ColumnType>(
214
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
16
                        : check_and_get_column<ColumnType>(&*data);
216
16
        if (!column) {
217
14
            return false;
218
14
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE44EEEZNS2_12execute_typeILS5_44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
14
            return false;
218
14
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
14
    }
_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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
14
            return false;
218
14
        }
219
220
0
        ColumnPtr res_column = create_column_func(column);
221
0
        res_column = make_nullable(res_column);
222
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
0
        auto guard = AggregateFunctionGuard(function.get());
226
0
        Arena arena;
227
0
        auto nullable_column = make_nullable(data->get_ptr());
228
0
        const IColumn* columns[] = {nullable_column.get()};
229
0
        function->check_input_columns_type(columns);
230
0
        function->check_result_column_type(*res_column);
231
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
0
            auto start = offsets[i - 1]; // -1 is ok.
233
0
            auto end = offsets[i];
234
0
            bool is_empty = (start == end);
235
0
            if (is_empty) {
236
0
                res_column->assert_mutable()->insert_default();
237
0
                continue;
238
0
            }
239
0
            function->reset(guard.data());
240
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
0
                                      is_column_nullable(*data));
242
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
0
        }
244
0
        res_ptr = std::move(res_column);
245
0
        return true;
246
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
207
14
                                  CreateColumnFunc create_column_func) {
208
14
        using Function =
209
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
14
        const ColumnType* column =
212
14
                is_column_nullable(*data)
213
14
                        ? check_and_get_column<ColumnType>(
214
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
14
                        : check_and_get_column<ColumnType>(&*data);
216
14
        if (!column) {
217
12
            return false;
218
12
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
12
                                  CreateColumnFunc create_column_func) {
208
12
        using Function =
209
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
12
        const ColumnType* column =
212
12
                is_column_nullable(*data)
213
12
                        ? check_and_get_column<ColumnType>(
214
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
12
                        : check_and_get_column<ColumnType>(&*data);
216
12
        if (!column) {
217
10
            return false;
218
10
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
10
                                  CreateColumnFunc create_column_func) {
208
10
        using Function =
209
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
10
        const ColumnType* column =
212
10
                is_column_nullable(*data)
213
10
                        ? check_and_get_column<ColumnType>(
214
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
10
                        : check_and_get_column<ColumnType>(&*data);
216
10
        if (!column) {
217
8
            return false;
218
8
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
8
                                  CreateColumnFunc create_column_func) {
208
8
        using Function =
209
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
8
        const ColumnType* column =
212
8
                is_column_nullable(*data)
213
8
                        ? check_and_get_column<ColumnType>(
214
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
8
                        : check_and_get_column<ColumnType>(&*data);
216
8
        if (!column) {
217
6
            return false;
218
6
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
6
                                  CreateColumnFunc create_column_func) {
208
6
        using Function =
209
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
6
        const ColumnType* column =
212
6
                is_column_nullable(*data)
213
6
                        ? check_and_get_column<ColumnType>(
214
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
6
                        : check_and_get_column<ColumnType>(&*data);
216
6
        if (!column) {
217
4
            return false;
218
4
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
4
                                  CreateColumnFunc create_column_func) {
208
4
        using Function =
209
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
4
        const ColumnType* column =
212
4
                is_column_nullable(*data)
213
4
                        ? check_and_get_column<ColumnType>(
214
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
4
                        : check_and_get_column<ColumnType>(&*data);
216
4
        if (!column) {
217
2
            return false;
218
2
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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
207
2
                                  CreateColumnFunc create_column_func) {
208
2
        using Function =
209
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
210
211
2
        const ColumnType* column =
212
2
                is_column_nullable(*data)
213
2
                        ? check_and_get_column<ColumnType>(
214
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
215
2
                        : check_and_get_column<ColumnType>(&*data);
216
2
        if (!column) {
217
0
            return false;
218
0
        }
219
220
2
        ColumnPtr res_column = create_column_func(column);
221
2
        res_column = make_nullable(res_column);
222
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
223
224
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
225
2
        auto guard = AggregateFunctionGuard(function.get());
226
2
        Arena arena;
227
2
        auto nullable_column = make_nullable(data->get_ptr());
228
2
        const IColumn* columns[] = {nullable_column.get()};
229
2
        function->check_input_columns_type(columns);
230
2
        function->check_result_column_type(*res_column);
231
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
232
5
            auto start = offsets[i - 1]; // -1 is ok.
233
5
            auto end = offsets[i];
234
5
            bool is_empty = (start == end);
235
5
            if (is_empty) {
236
2
                res_column->assert_mutable()->insert_default();
237
2
                continue;
238
2
            }
239
3
            function->reset(guard.data());
240
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
241
3
                                      is_column_nullable(*data));
242
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
243
3
        }
244
2
        res_ptr = std::move(res_column);
245
2
        return true;
246
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_13PrimitiveTypeE43EEEZNS2_12execute_typeILS5_43EEEbRNS_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_
247
248
    template <PrimitiveType Element>
249
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
250
447
                             const ColumnArray::Offsets64& offsets) {
251
447
        if constexpr (is_string_type(Element)) {
252
0
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
0
                operation == AggregateOperation::AVERAGE) {
254
0
                return false;
255
0
            }
256
257
0
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
0
                return ColumnString::create();
259
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_
260
261
0
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
0
                                                                            offsets, create_column);
263
447
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
0
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
0
                return false;
270
447
            } else {
271
447
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
447
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
447
                        operation>::template TypeTraits<Element>::ResultType;
274
447
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
447
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
76
                    if constexpr (is_decimal(Element)) {
278
0
                        return ColVecResultType::create(0, column->get_scale());
279
76
                    } else {
280
76
                        return ColVecResultType::create();
281
76
                    }
282
76
                };
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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
276
3
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
3
                    } else {
280
3
                        return ColVecResultType::create();
281
3
                    }
282
3
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
276
3
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
3
                    } else {
280
3
                        return ColVecResultType::create();
281
3
                    }
282
3
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_44EEEE_clEST_
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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
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_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_43EEEE_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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_44EEEE_clEST_
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
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
                    if constexpr (is_decimal(Element)) {
278
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
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_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_43EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
283
284
447
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
447
                        res_ptr, type, data, offsets, create_column);
286
447
            }
287
447
        }
288
447
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
12
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
12
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
12
            } else {
271
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
12
                        operation>::template TypeTraits<Element>::ResultType;
274
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
12
                    if constexpr (is_decimal(Element)) {
278
12
                        return ColVecResultType::create(0, column->get_scale());
279
12
                    } else {
280
12
                        return ColVecResultType::create();
281
12
                    }
282
12
                };
283
284
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
12
                        res_ptr, type, data, offsets, create_column);
286
12
            }
287
12
        }
288
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
8
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
8
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
8
            } else {
271
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
8
                        operation>::template TypeTraits<Element>::ResultType;
274
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
8
                    if constexpr (is_decimal(Element)) {
278
8
                        return ColVecResultType::create(0, column->get_scale());
279
8
                    } else {
280
8
                        return ColVecResultType::create();
281
8
                    }
282
8
                };
283
284
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
8
                        res_ptr, type, data, offsets, create_column);
286
8
            }
287
8
        }
288
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
6
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
6
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
6
            } else {
271
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
6
                        operation>::template TypeTraits<Element>::ResultType;
274
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
6
                    if constexpr (is_decimal(Element)) {
278
6
                        return ColVecResultType::create(0, column->get_scale());
279
6
                    } else {
280
6
                        return ColVecResultType::create();
281
6
                    }
282
6
                };
283
284
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
6
                        res_ptr, type, data, offsets, create_column);
286
6
            }
287
6
        }
288
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
4
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
4
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
4
            } else {
271
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
4
                        operation>::template TypeTraits<Element>::ResultType;
274
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
4
                    if constexpr (is_decimal(Element)) {
278
4
                        return ColVecResultType::create(0, column->get_scale());
279
4
                    } else {
280
4
                        return ColVecResultType::create();
281
4
                    }
282
4
                };
283
284
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
4
                        res_ptr, type, data, offsets, create_column);
286
4
            }
287
4
        }
288
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
2
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
2
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
2
            } else {
271
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
2
                        operation>::template TypeTraits<Element>::ResultType;
274
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
2
                    if constexpr (is_decimal(Element)) {
278
2
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
283
284
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
2
                        res_ptr, type, data, offsets, create_column);
286
2
            }
287
2
        }
288
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_13PrimitiveTypeE43EEEbRNS_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
250
16
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
16
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
16
            } else {
271
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
16
                        operation>::template TypeTraits<Element>::ResultType;
274
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
16
                    if constexpr (is_decimal(Element)) {
278
16
                        return ColVecResultType::create(0, column->get_scale());
279
16
                    } else {
280
16
                        return ColVecResultType::create();
281
16
                    }
282
16
                };
283
284
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
16
                        res_ptr, type, data, offsets, create_column);
286
16
            }
287
16
        }
288
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
16
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
16
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
16
            } else {
271
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
16
                        operation>::template TypeTraits<Element>::ResultType;
274
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
16
                    if constexpr (is_decimal(Element)) {
278
16
                        return ColVecResultType::create(0, column->get_scale());
279
16
                    } else {
280
16
                        return ColVecResultType::create();
281
16
                    }
282
16
                };
283
284
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
16
                        res_ptr, type, data, offsets, create_column);
286
16
            }
287
16
        }
288
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
12
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
12
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
12
            } else {
271
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
12
                        operation>::template TypeTraits<Element>::ResultType;
274
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
12
                    if constexpr (is_decimal(Element)) {
278
12
                        return ColVecResultType::create(0, column->get_scale());
279
12
                    } else {
280
12
                        return ColVecResultType::create();
281
12
                    }
282
12
                };
283
284
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
12
                        res_ptr, type, data, offsets, create_column);
286
12
            }
287
12
        }
288
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
7
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
7
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
7
            } else {
271
7
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
7
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
7
                        operation>::template TypeTraits<Element>::ResultType;
274
7
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
7
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
7
                    if constexpr (is_decimal(Element)) {
278
7
                        return ColVecResultType::create(0, column->get_scale());
279
7
                    } else {
280
7
                        return ColVecResultType::create();
281
7
                    }
282
7
                };
283
284
7
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
7
                        res_ptr, type, data, offsets, create_column);
286
7
            }
287
7
        }
288
7
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
4
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
4
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
4
            } else {
271
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
4
                        operation>::template TypeTraits<Element>::ResultType;
274
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
4
                    if constexpr (is_decimal(Element)) {
278
4
                        return ColVecResultType::create(0, column->get_scale());
279
4
                    } else {
280
4
                        return ColVecResultType::create();
281
4
                    }
282
4
                };
283
284
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
4
                        res_ptr, type, data, offsets, create_column);
286
4
            }
287
4
        }
288
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
2
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
2
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
2
            } else {
271
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
2
                        operation>::template TypeTraits<Element>::ResultType;
274
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
2
                    if constexpr (is_decimal(Element)) {
278
2
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
283
284
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
2
                        res_ptr, type, data, offsets, create_column);
286
2
            }
287
2
        }
288
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_13PrimitiveTypeE43EEEbRNS_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
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
8
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
8
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
8
            } else {
271
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
8
                        operation>::template TypeTraits<Element>::ResultType;
274
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
8
                    if constexpr (is_decimal(Element)) {
278
8
                        return ColVecResultType::create(0, column->get_scale());
279
8
                    } else {
280
8
                        return ColVecResultType::create();
281
8
                    }
282
8
                };
283
284
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
8
                        res_ptr, type, data, offsets, create_column);
286
8
            }
287
8
        }
288
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
6
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
6
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
6
            } else {
271
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
6
                        operation>::template TypeTraits<Element>::ResultType;
274
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
6
                    if constexpr (is_decimal(Element)) {
278
6
                        return ColVecResultType::create(0, column->get_scale());
279
6
                    } else {
280
6
                        return ColVecResultType::create();
281
6
                    }
282
6
                };
283
284
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
6
                        res_ptr, type, data, offsets, create_column);
286
6
            }
287
6
        }
288
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
4
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
4
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
4
            } else {
271
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
4
                        operation>::template TypeTraits<Element>::ResultType;
274
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
4
                    if constexpr (is_decimal(Element)) {
278
4
                        return ColVecResultType::create(0, column->get_scale());
279
4
                    } else {
280
4
                        return ColVecResultType::create();
281
4
                    }
282
4
                };
283
284
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
4
                        res_ptr, type, data, offsets, create_column);
286
4
            }
287
4
        }
288
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
2
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
2
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
2
            } else {
271
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
2
                        operation>::template TypeTraits<Element>::ResultType;
274
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
2
                    if constexpr (is_decimal(Element)) {
278
2
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
283
284
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
2
                        res_ptr, type, data, offsets, create_column);
286
2
            }
287
2
        }
288
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_13PrimitiveTypeE43EEEbRNS_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
250
18
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
18
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
18
            } else {
271
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
18
                        operation>::template TypeTraits<Element>::ResultType;
274
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
18
                    if constexpr (is_decimal(Element)) {
278
18
                        return ColVecResultType::create(0, column->get_scale());
279
18
                    } else {
280
18
                        return ColVecResultType::create();
281
18
                    }
282
18
                };
283
284
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
18
                        res_ptr, type, data, offsets, create_column);
286
18
            }
287
18
        }
288
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
16
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
16
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
16
            } else {
271
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
16
                        operation>::template TypeTraits<Element>::ResultType;
274
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
16
                    if constexpr (is_decimal(Element)) {
278
16
                        return ColVecResultType::create(0, column->get_scale());
279
16
                    } else {
280
16
                        return ColVecResultType::create();
281
16
                    }
282
16
                };
283
284
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
16
                        res_ptr, type, data, offsets, create_column);
286
16
            }
287
16
        }
288
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
12
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
12
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
12
            } else {
271
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
12
                        operation>::template TypeTraits<Element>::ResultType;
274
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
12
                    if constexpr (is_decimal(Element)) {
278
12
                        return ColVecResultType::create(0, column->get_scale());
279
12
                    } else {
280
12
                        return ColVecResultType::create();
281
12
                    }
282
12
                };
283
284
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
12
                        res_ptr, type, data, offsets, create_column);
286
12
            }
287
12
        }
288
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
8
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
8
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
8
            } else {
271
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
8
                        operation>::template TypeTraits<Element>::ResultType;
274
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
8
                    if constexpr (is_decimal(Element)) {
278
8
                        return ColVecResultType::create(0, column->get_scale());
279
8
                    } else {
280
8
                        return ColVecResultType::create();
281
8
                    }
282
8
                };
283
284
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
8
                        res_ptr, type, data, offsets, create_column);
286
8
            }
287
8
        }
288
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
6
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
6
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
6
            } else {
271
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
6
                        operation>::template TypeTraits<Element>::ResultType;
274
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
6
                    if constexpr (is_decimal(Element)) {
278
6
                        return ColVecResultType::create(0, column->get_scale());
279
6
                    } else {
280
6
                        return ColVecResultType::create();
281
6
                    }
282
6
                };
283
284
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
6
                        res_ptr, type, data, offsets, create_column);
286
6
            }
287
6
        }
288
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
4
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
4
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
4
            } else {
271
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
4
                        operation>::template TypeTraits<Element>::ResultType;
274
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
4
                    if constexpr (is_decimal(Element)) {
278
4
                        return ColVecResultType::create(0, column->get_scale());
279
4
                    } else {
280
4
                        return ColVecResultType::create();
281
4
                    }
282
4
                };
283
284
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
4
                        res_ptr, type, data, offsets, create_column);
286
4
            }
287
4
        }
288
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
2
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
2
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
2
            } else {
271
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
2
                        operation>::template TypeTraits<Element>::ResultType;
274
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
2
                    if constexpr (is_decimal(Element)) {
278
2
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
283
284
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
2
                        res_ptr, type, data, offsets, create_column);
286
2
            }
287
2
        }
288
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_13PrimitiveTypeE43EEEbRNS_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
250
18
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
18
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
18
            } else {
271
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
18
                        operation>::template TypeTraits<Element>::ResultType;
274
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
18
                    if constexpr (is_decimal(Element)) {
278
18
                        return ColVecResultType::create(0, column->get_scale());
279
18
                    } else {
280
18
                        return ColVecResultType::create();
281
18
                    }
282
18
                };
283
284
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
18
                        res_ptr, type, data, offsets, create_column);
286
18
            }
287
18
        }
288
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
16
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
16
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
16
            } else {
271
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
16
                        operation>::template TypeTraits<Element>::ResultType;
274
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
16
                    if constexpr (is_decimal(Element)) {
278
16
                        return ColVecResultType::create(0, column->get_scale());
279
16
                    } else {
280
16
                        return ColVecResultType::create();
281
16
                    }
282
16
                };
283
284
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
16
                        res_ptr, type, data, offsets, create_column);
286
16
            }
287
16
        }
288
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
14
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
14
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
14
            } else {
271
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
14
                        operation>::template TypeTraits<Element>::ResultType;
274
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
14
                    if constexpr (is_decimal(Element)) {
278
14
                        return ColVecResultType::create(0, column->get_scale());
279
14
                    } else {
280
14
                        return ColVecResultType::create();
281
14
                    }
282
14
                };
283
284
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
14
                        res_ptr, type, data, offsets, create_column);
286
14
            }
287
14
        }
288
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
12
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
12
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
12
            } else {
271
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
12
                        operation>::template TypeTraits<Element>::ResultType;
274
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
12
                    if constexpr (is_decimal(Element)) {
278
12
                        return ColVecResultType::create(0, column->get_scale());
279
12
                    } else {
280
12
                        return ColVecResultType::create();
281
12
                    }
282
12
                };
283
284
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
12
                        res_ptr, type, data, offsets, create_column);
286
12
            }
287
12
        }
288
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
10
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
10
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
10
            } else {
271
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
10
                        operation>::template TypeTraits<Element>::ResultType;
274
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
10
                    if constexpr (is_decimal(Element)) {
278
10
                        return ColVecResultType::create(0, column->get_scale());
279
10
                    } else {
280
10
                        return ColVecResultType::create();
281
10
                    }
282
10
                };
283
284
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
10
                        res_ptr, type, data, offsets, create_column);
286
10
            }
287
10
        }
288
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
8
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
8
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
8
            } else {
271
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
8
                        operation>::template TypeTraits<Element>::ResultType;
274
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
8
                    if constexpr (is_decimal(Element)) {
278
8
                        return ColVecResultType::create(0, column->get_scale());
279
8
                    } else {
280
8
                        return ColVecResultType::create();
281
8
                    }
282
8
                };
283
284
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
8
                        res_ptr, type, data, offsets, create_column);
286
8
            }
287
8
        }
288
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
6
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
6
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
6
            } else {
271
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
6
                        operation>::template TypeTraits<Element>::ResultType;
274
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
6
                    if constexpr (is_decimal(Element)) {
278
6
                        return ColVecResultType::create(0, column->get_scale());
279
6
                    } else {
280
6
                        return ColVecResultType::create();
281
6
                    }
282
6
                };
283
284
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
6
                        res_ptr, type, data, offsets, create_column);
286
6
            }
287
6
        }
288
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
4
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
4
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
4
            } else {
271
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
4
                        operation>::template TypeTraits<Element>::ResultType;
274
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
4
                    if constexpr (is_decimal(Element)) {
278
4
                        return ColVecResultType::create(0, column->get_scale());
279
4
                    } else {
280
4
                        return ColVecResultType::create();
281
4
                    }
282
4
                };
283
284
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
4
                        res_ptr, type, data, offsets, create_column);
286
4
            }
287
4
        }
288
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
250
2
                             const ColumnArray::Offsets64& offsets) {
251
        if constexpr (is_string_type(Element)) {
252
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
253
                operation == AggregateOperation::AVERAGE) {
254
                return false;
255
            }
256
257
            auto create_column = [](const ColumnString*) -> ColumnPtr {
258
                return ColumnString::create();
259
            };
260
261
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
262
                                                                            offsets, create_column);
263
2
        } else {
264
            if constexpr ((operation == AggregateOperation::SUM ||
265
                           operation == AggregateOperation::PRODUCT ||
266
                           operation == AggregateOperation::AVERAGE) &&
267
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
268
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
269
                return false;
270
2
            } else {
271
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
272
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
273
2
                        operation>::template TypeTraits<Element>::ResultType;
274
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
275
276
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
277
2
                    if constexpr (is_decimal(Element)) {
278
2
                        return ColVecResultType::create(0, column->get_scale());
279
2
                    } else {
280
2
                        return ColVecResultType::create();
281
2
                    }
282
2
                };
283
284
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
285
2
                        res_ptr, type, data, offsets, create_column);
286
2
            }
287
2
        }
288
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_13PrimitiveTypeE43EEEbRNS_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
289
};
290
291
struct NameArrayMin {
292
    static constexpr auto name = "array_min";
293
};
294
295
template <>
296
struct ArrayAggregateFunctionCreator<AggregateOperation::MIN,
297
                                     AggregateFunctionTraits<AggregateOperation::MIN>> {
298
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
299
36
            -> AggregateFunctionPtr {
300
36
        return create_aggregate_function_single_value<AggregateFunctionMinData>(
301
36
                NameArrayMin::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
302
36
                true, attr);
303
36
    }
304
};
305
306
struct NameArrayMax {
307
    static constexpr auto name = "array_max";
308
};
309
310
template <>
311
struct ArrayAggregateFunctionCreator<AggregateOperation::MAX,
312
                                     AggregateFunctionTraits<AggregateOperation::MAX>> {
313
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
314
36
            -> AggregateFunctionPtr {
315
36
        return create_aggregate_function_single_value<AggregateFunctionMaxData>(
316
36
                NameArrayMax::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
317
36
                true, attr);
318
36
    }
319
};
320
321
struct NameArraySum {
322
    static constexpr auto name = "array_sum";
323
};
324
325
struct NameArrayAverage {
326
    static constexpr auto name = "array_avg";
327
};
328
struct NameArrayProduct {
329
    static constexpr auto name = "array_product";
330
};
331
332
using FunctionArrayMin =
333
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MIN>, NameArrayMin>;
334
using FunctionArrayMax =
335
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MAX>, NameArrayMax>;
336
using FunctionArraySum =
337
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::SUM>, NameArraySum>;
338
using FunctionArrayAverage =
339
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::AVERAGE>, NameArrayAverage>;
340
using FunctionArrayProduct =
341
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::PRODUCT>, NameArrayProduct>;
342
343
using FunctionArrayJoin = FunctionArrayMapped<ArrayJoinImpl, NameArrayJoin>;
344
345
template <AggregateOperation operation>
346
struct AggregateFunctionTraitsWithResultType;
347
348
template <>
349
struct AggregateFunctionTraitsWithResultType<AggregateOperation::SUM> {
350
    template <PrimitiveType InputType, PrimitiveType ResultType>
351
    struct TypeTraits {
352
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
353
        using Function = AggregateFunctionSum<InputType, ResultType, AggregateDataType>;
354
    };
355
};
356
template <>
357
struct AggregateFunctionTraitsWithResultType<AggregateOperation::AVERAGE> {
358
    template <PrimitiveType InputType, PrimitiveType ResultType>
359
    struct TypeTraits {
360
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
361
        using Function = AggregateFunctionAvg<InputType, ResultType, AggregateDataType>;
362
    };
363
};
364
template <>
365
struct AggregateFunctionTraitsWithResultType<AggregateOperation::PRODUCT> {
366
    template <PrimitiveType InputType, PrimitiveType ResultType>
367
    struct TypeTraits {
368
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
369
        using Function = AggregateFunctionProduct<InputType, ResultType, AggregateDataType>;
370
    };
371
};
372
template <typename Derived>
373
struct ArrayAggregateFunctionCreatorWithResultType {
374
    template <PrimitiveType InputType, PrimitiveType ResultType>
375
    using Function = typename Derived::template TypeTraits<InputType, ResultType>::Function;
376
377
    static auto create(const DataTypePtr& data_type_ptr, const DataTypePtr& result_type_ptr,
378
0
                       const AggregateFunctionAttr& attr) -> AggregateFunctionPtr {
379
0
        return creator_with_type_list<
380
0
                TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
381
0
                TYPE_DECIMAL256>::creator_with_result_type<Function>("",
382
0
                                                                     DataTypes {make_nullable(
383
0
                                                                             data_type_ptr)},
384
0
                                                                     result_type_ptr, true, attr);
385
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
386
};
387
template <AggregateOperation operation, PrimitiveType ResultType>
388
struct ArrayAggregateImplDecimalV3;
389
template <AggregateOperation operation, PrimitiveType ResultType>
390
    requires(operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
391
             operation == AggregateOperation::AVERAGE)
392
struct ArrayAggregateImplDecimalV3<operation, ResultType> {
393
    using column_type = ColumnArray;
394
    using data_type = DataTypeArray;
395
396
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
397
398
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
399
400
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
401
402
0
    static DataTypePtr get_return_type(const DataTypes& arguments) {
403
0
        throw doris::Exception(
404
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
405
0
                "get_return_type is not implemented for ArrayAggregateImplDecimalV3");
406
0
        __builtin_unreachable();
407
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
408
409
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
410
                          const DataTypePtr& result_type, const DataTypeArray* data_type_array,
411
0
                          const ColumnArray& array) {
412
0
        ColumnPtr res;
413
0
        DataTypePtr type = data_type_array->get_nested_type();
414
0
        const IColumn* data = array.get_data_ptr().get();
415
416
0
        const auto& offsets = array.get_offsets();
417
418
0
        if (execute_type<TYPE_DECIMAL32>(res, result_type, type, data, offsets) ||
419
0
            execute_type<TYPE_DECIMAL64>(res, result_type, type, data, offsets) ||
420
0
            execute_type<TYPE_DECIMAL128I>(res, result_type, type, data, offsets) ||
421
0
            execute_type<TYPE_DECIMAL256>(res, result_type, type, data, offsets)) {
422
0
            block.replace_by_position(result, std::move(res));
423
0
            return Status::OK();
424
0
        } else {
425
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
426
0
        }
427
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
428
429
    template <typename ColumnType, typename CreateColumnFunc>
430
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& result_type,
431
                                  const DataTypePtr& type, const IColumn* data,
432
                                  const ColumnArray::Offsets64& offsets,
433
0
                                  CreateColumnFunc create_column_func) {
434
0
        using Function = ArrayAggregateFunctionCreatorWithResultType<
435
0
                AggregateFunctionTraitsWithResultType<operation>>;
436
437
0
        const ColumnType* column =
438
0
                is_column_nullable(*data)
439
0
                        ? check_and_get_column<ColumnType>(
440
0
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
441
0
                        : check_and_get_column<ColumnType>(&*data);
442
0
        if (!column) {
443
0
            return false;
444
0
        }
445
446
0
        ColumnPtr res_column = create_column_func(column);
447
0
        res_column = make_nullable(res_column);
448
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
449
450
0
        auto function = Function::create(type, result_type,
451
0
                                         {.is_window_function = false, .column_names = {}});
452
0
        auto guard = AggregateFunctionGuard(function.get());
453
0
        Arena arena;
454
0
        auto nullable_column = make_nullable(data->get_ptr());
455
0
        const IColumn* columns[] = {nullable_column.get()};
456
0
        function->check_input_columns_type(columns);
457
0
        function->check_result_column_type(*res_column);
458
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
459
0
            auto start = offsets[i - 1]; // -1 is ok.
460
0
            auto end = offsets[i];
461
0
            bool is_empty = (start == end);
462
0
            if (is_empty) {
463
0
                res_column->assert_mutable()->insert_default();
464
0
                continue;
465
0
            }
466
0
            function->reset(guard.data());
467
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
468
0
                                      is_column_nullable(*data));
469
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
470
0
        }
471
0
        res_ptr = std::move(res_column);
472
0
        return true;
473
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_
474
475
    template <PrimitiveType Element>
476
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& result_type,
477
                             const DataTypePtr& type, const IColumn* data,
478
0
                             const ColumnArray::Offsets64& offsets) {
479
0
        using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
480
0
        using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
481
482
0
        auto create_column = [](const ColVecType* column) -> ColumnPtr {
483
0
            return ColVecResultType::create(0, column->get_scale());
484
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_
485
486
0
        return execute_type_impl<ColVecType, decltype(create_column)>(res_ptr, result_type, type,
487
0
                                                                      data, offsets, create_column);
488
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
489
};
490
491
template <typename Impl, typename Name>
492
class FunctionArrayAggDecimalV3 : public IFunction {
493
public:
494
    static constexpr auto name = Name::name;
495
    explicit FunctionArrayAggDecimalV3(DataTypePtr result_type)
496
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
497
498
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
499
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
500
0
                        uint32_t result, size_t input_rows_count) const override {
501
0
        const auto& typed_column = block.get_by_position(arguments[0]);
502
0
        auto ptr = typed_column.column->convert_to_full_column_if_const();
503
0
        const typename Impl::column_type* column_array;
504
0
        if (is_column_nullable(*ptr)) {
505
0
            column_array = assert_cast<const typename Impl::column_type*>(
506
0
                    assert_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
507
0
        } else {
508
0
            column_array = assert_cast<const typename Impl::column_type*>(ptr.get());
509
0
        }
510
0
        const auto* data_type_array =
511
0
                assert_cast<const DataTypeArray*>(remove_nullable(typed_column.type).get());
512
0
        return Impl::execute(block, arguments, result, _result_type, data_type_array,
513
0
                             *column_array);
514
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
515
516
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
517
518
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
519
520
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
521
522
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
523
0
        return Impl::get_return_type(arguments);
524
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
525
526
private:
527
    DataTypePtr _result_type;
528
};
529
template <PrimitiveType ResultType>
530
struct ArraySumDecimalV3Attributes {
531
    static_assert(is_decimalv3(ResultType));
532
    using AggregateDataType = AggregateFunctionSumData<ResultType>;
533
    using Function = FunctionArrayAggDecimalV3<
534
            ArrayAggregateImplDecimalV3<AggregateOperation::SUM, ResultType>, NameArraySum>;
535
};
536
template <PrimitiveType ResultType>
537
using ArraySumDecimalV3 = typename ArraySumDecimalV3Attributes<ResultType>::Function;
538
539
template <PrimitiveType ResultType>
540
struct ArrayAvgDecimalV3Attributes {
541
    static_assert(is_decimalv3(ResultType));
542
    using AggregateDataType = AggregateFunctionAvgData<ResultType>;
543
    using Function = FunctionArrayAggDecimalV3<
544
            ArrayAggregateImplDecimalV3<AggregateOperation::AVERAGE, ResultType>, NameArrayAverage>;
545
};
546
template <PrimitiveType ResultType>
547
using ArrayAvgDecimalV3 = typename ArrayAvgDecimalV3Attributes<ResultType>::Function;
548
549
template <PrimitiveType ResultType>
550
struct ArrayProductDecimalV3Attributes {
551
    static_assert(is_decimalv3(ResultType));
552
    using AggregateDataType = AggregateFunctionProductData<ResultType>;
553
    using Function = FunctionArrayAggDecimalV3<
554
            ArrayAggregateImplDecimalV3<AggregateOperation::PRODUCT, ResultType>, NameArrayProduct>;
555
};
556
template <PrimitiveType ResultType>
557
using ArrayProductDecimalV3 = typename ArrayProductDecimalV3Attributes<ResultType>::Function;
558
1
void register_array_reduce_agg_functions(SimpleFunctionFactory& factory) {
559
1
    {
560
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
561
14
            if (is_decimalv3(result_type->get_primitive_type())) {
562
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
563
0
                        ArraySumDecimalV3>(result_type);
564
14
            } else {
565
14
                FunctionBuilderPtr func =
566
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArraySum::create());
567
14
                return func;
568
14
            }
569
14
        };
570
1
        factory.register_array_agg_function(NameArraySum::name, creator);
571
1
    }
572
1
    {
573
16
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
574
16
            if (is_decimalv3(result_type->get_primitive_type())) {
575
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
576
0
                        ArrayAvgDecimalV3>(result_type);
577
16
            } else {
578
16
                FunctionBuilderPtr func =
579
16
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayAverage::create());
580
16
                return func;
581
16
            }
582
16
        };
583
1
        factory.register_array_agg_function(NameArrayAverage::name, creator);
584
1
    }
585
1
    {
586
10
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
587
10
            if (is_decimalv3(result_type->get_primitive_type())) {
588
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
589
0
                        ArrayProductDecimalV3>(result_type);
590
10
            } else {
591
10
                FunctionBuilderPtr func =
592
10
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayProduct::create());
593
10
                return func;
594
10
            }
595
10
        };
596
1
        factory.register_array_agg_function(NameArrayProduct::name, creator);
597
1
    }
598
1
}
599
600
1
void register_function_array_aggregation(SimpleFunctionFactory& factory) {
601
1
    factory.register_function<FunctionArrayMin>();
602
1
    factory.register_function<FunctionArrayMax>();
603
1
    factory.register_function<FunctionArrayJoin>();
604
1
    register_array_reduce_agg_functions(factory);
605
1
}
606
607
} // namespace doris