Coverage Report

Created: 2026-09-30 12:43

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/array/function_array_aggregation.cpp
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/array/arrayAggregation.cpp
19
// and modified by Doris
20
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include <memory>
25
#include <type_traits>
26
#include <utility>
27
28
#include "common/exception.h"
29
#include "common/status.h"
30
#include "core/arena.h"
31
#include "core/block/block.h"
32
#include "core/block/column_numbers.h"
33
#include "core/column/column.h"
34
#include "core/column/column_array.h"
35
#include "core/column/column_decimal.h"
36
#include "core/column/column_nullable.h"
37
#include "core/data_type/data_type.h"
38
#include "core/data_type/data_type_array.h"
39
#include "core/data_type/data_type_nullable.h"
40
#include "core/data_type/define_primitive_type.h"
41
#include "core/data_type/primitive_type.h"
42
#include "core/types.h"
43
#include "exprs/aggregate/aggregate_function.h"
44
#include "exprs/aggregate/aggregate_function_avg.h"
45
#include "exprs/aggregate/aggregate_function_min_max.h"
46
#include "exprs/aggregate/aggregate_function_product.h"
47
#include "exprs/aggregate/aggregate_function_simple_factory.h"
48
#include "exprs/aggregate/aggregate_function_sum.h"
49
#include "exprs/aggregate/helpers.h"
50
#include "exprs/function/array/function_array_join.h"
51
#include "exprs/function/array/function_array_mapped.h"
52
#include "exprs/function/function.h"
53
#include "exprs/function/simple_function_factory.h"
54
#include "storage/predicate/column_predicate.h"
55
56
namespace doris {
57
58
enum class AggregateOperation { MIN, MAX, SUM, AVERAGE, PRODUCT };
59
60
// For MIN/MAX, the type of result is the same as the type of elements, we can omit the
61
// template specialization.
62
template <AggregateOperation operation>
63
struct AggregateFunctionTraits;
64
65
template <AggregateOperation operation>
66
    requires(operation == AggregateOperation::MIN || operation == AggregateOperation::MAX)
67
struct AggregateFunctionTraits<operation> {
68
    template <PrimitiveType Element>
69
    struct TypeTraits {
70
        static constexpr PrimitiveType ResultType = Element;
71
    };
72
};
73
74
template <>
75
struct AggregateFunctionTraits<AggregateOperation::SUM> {
76
    template <PrimitiveType Element>
77
    struct TypeTraits {
78
        static constexpr PrimitiveType ResultType =
79
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2
80
                : is_float_or_double(Element)
81
                        ? TYPE_DOUBLE
82
                        : (Element == TYPE_LARGEINT ? TYPE_LARGEINT : TYPE_BIGINT);
83
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
84
        using Function = AggregateFunctionSum<Element, ResultType, AggregateDataType>;
85
    };
86
};
87
template <>
88
struct AggregateFunctionTraits<AggregateOperation::AVERAGE> {
89
    template <PrimitiveType Element>
90
    struct TypeTraits {
91
        static constexpr PrimitiveType ResultType =
92
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : TYPE_DOUBLE;
93
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
94
        using Function = AggregateFunctionAvg<Element, ResultType, AggregateDataType>;
95
        static_assert(std::is_same_v<typename PrimitiveTypeTraits<ResultType>::CppType,
96
                                     typename Function::ResultType>,
97
                      "ResultType doesn't match.");
98
    };
99
};
100
101
template <>
102
struct AggregateFunctionTraits<AggregateOperation::PRODUCT> {
103
    template <PrimitiveType Element>
104
    struct TypeTraits {
105
        static constexpr PrimitiveType ResultType =
106
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : Element;
107
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
108
        using Function = AggregateFunctionProduct<Element, ResultType, AggregateDataType>;
109
    };
110
};
111
112
template <AggregateOperation AggOp, typename Derived>
113
struct ArrayAggregateFunctionCreator {
114
    template <PrimitiveType T>
115
    using Function = typename Derived::template TypeTraits<T>::Function;
116
117
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
118
76
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
76
        } else {
126
76
            return creator_with_type_list<
127
76
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
76
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
76
                                                   attr);
130
76
        }
131
76
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE2ENS_23AggregateFunctionTraitsILS1_2EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE3ENS_23AggregateFunctionTraitsILS1_3EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE4ENS_23AggregateFunctionTraitsILS1_4EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
20
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
20
        } else {
126
20
            return creator_with_type_list<
127
20
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
20
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
20
                                                   attr);
130
20
        }
131
20
    }
132
};
133
134
template <AggregateOperation operation>
135
struct ArrayAggregateImpl {
136
    using column_type = ColumnArray;
137
    using data_type = DataTypeArray;
138
139
76
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12_is_variadicEv
Line
Count
Source
139
10
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
140
141
74
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE24_get_number_of_argumentsEv
Line
Count
Source
141
10
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
142
143
    static bool skip_return_type_check() { return false; }
144
145
74
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
74
        using Function =
147
74
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
74
        const DataTypeArray* data_type_array =
149
74
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
74
        auto function = Function::create(data_type_array->get_nested_type(),
151
74
                                         {.is_window_function = false, .column_names = {}});
152
74
        if (function) {
153
74
            return function->get_return_type();
154
74
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
10
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
10
        using Function =
147
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
10
        const DataTypeArray* data_type_array =
149
10
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
10
        auto function = Function::create(data_type_array->get_nested_type(),
151
10
                                         {.is_window_function = false, .column_names = {}});
152
10
        if (function) {
153
10
            return function->get_return_type();
154
10
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
160
161
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
162
74
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
74
        ColumnPtr res;
164
74
        DataTypePtr type = data_type_array->get_nested_type();
165
74
        const IColumn* data = array.get_data_ptr().get();
166
167
74
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
36
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
36
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
36
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
36
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
8
                block.replace_by_position(result, std::move(res));
175
8
                return Status::OK();
176
8
            }
177
36
        }
178
179
74
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
74
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
74
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
74
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
74
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
74
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
74
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
74
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
74
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
74
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
74
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
74
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
74
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
74
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
74
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
74
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
74
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
66
            block.replace_by_position(result, std::move(res));
197
66
            return Status::OK();
198
66
        } else {
199
8
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
8
        }
201
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
                block.replace_by_position(result, std::move(res));
175
                return Status::OK();
176
            }
177
        }
178
179
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
14
            block.replace_by_position(result, std::move(res));
197
14
            return Status::OK();
198
14
        } else {
199
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
0
        }
201
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
                block.replace_by_position(result, std::move(res));
175
                return Status::OK();
176
            }
177
        }
178
179
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
14
            block.replace_by_position(result, std::move(res));
197
14
            return Status::OK();
198
14
        } else {
199
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
0
        }
201
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
10
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
10
        ColumnPtr res;
164
10
        DataTypePtr type = data_type_array->get_nested_type();
165
10
        const IColumn* data = array.get_data_ptr().get();
166
167
10
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
                block.replace_by_position(result, std::move(res));
175
                return Status::OK();
176
            }
177
        }
178
179
10
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
10
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
10
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
10
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
10
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
10
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
10
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
10
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
10
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
10
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
10
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
10
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
10
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
10
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
10
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
10
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
10
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
10
            block.replace_by_position(result, std::move(res));
197
10
            return Status::OK();
198
10
        } else {
199
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
0
        }
201
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
18
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
4
                block.replace_by_position(result, std::move(res));
175
4
                return Status::OK();
176
4
            }
177
18
        }
178
179
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
14
            block.replace_by_position(result, std::move(res));
197
14
            return Status::OK();
198
14
        } else {
199
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
4
        }
201
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // These fixed-width non-numeric types support min/max only.
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets) ||
173
18
                execute_type<TYPE_UUID>(res, type, data, offsets)) {
174
4
                block.replace_by_position(result, std::move(res));
175
4
                return Status::OK();
176
4
            }
177
18
        }
178
179
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_TIMESTAMP_NS>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
195
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
196
14
            block.replace_by_position(result, std::move(res));
197
14
            return Status::OK();
198
14
        } else {
199
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
200
4
        }
201
18
    }
202
203
    template <typename ColumnType, typename CreateColumnFunc>
204
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
205
                                  const ColumnArray::Offsets64& offsets,
206
436
                                  CreateColumnFunc create_column_func) {
207
436
        using Function =
208
436
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
436
        const ColumnType* column =
211
436
                is_column_nullable(*data)
212
436
                        ? check_and_get_column<ColumnType>(
213
436
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
436
                        : check_and_get_column<ColumnType>(&*data);
215
436
        if (!column) {
216
362
            return false;
217
362
        }
218
219
74
        ColumnPtr res_column = create_column_func(column);
220
74
        res_column = make_nullable(res_column);
221
74
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
74
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
74
        auto guard = AggregateFunctionGuard(function.get());
225
74
        Arena arena;
226
74
        auto nullable_column = make_nullable(data->get_ptr());
227
74
        const IColumn* columns[] = {nullable_column.get()};
228
74
        function->check_input_columns_type(columns);
229
74
        function->check_result_column_type(*res_column);
230
259
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
185
            auto start = offsets[i - 1]; // -1 is ok.
232
185
            auto end = offsets[i];
233
185
            bool is_empty = (start == end);
234
185
            if (is_empty) {
235
74
                res_column->assert_mutable()->insert_default();
236
74
                continue;
237
74
            }
238
111
            function->reset(guard.data());
239
111
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
111
                                      is_column_nullable(*data));
241
111
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
111
        }
243
74
        res_ptr = std::move(res_column);
244
74
        return true;
245
436
    }
_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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
12
            return false;
217
12
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
12
                                  CreateColumnFunc create_column_func) {
207
12
        using Function =
208
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
12
        const ColumnType* column =
211
12
                is_column_nullable(*data)
212
12
                        ? check_and_get_column<ColumnType>(
213
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
12
                        : check_and_get_column<ColumnType>(&*data);
215
12
        if (!column) {
216
10
            return false;
217
10
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
8
            return false;
217
8
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
8
                                  CreateColumnFunc create_column_func) {
207
8
        using Function =
208
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
8
        const ColumnType* column =
211
8
                is_column_nullable(*data)
212
8
                        ? check_and_get_column<ColumnType>(
213
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
8
                        : check_and_get_column<ColumnType>(&*data);
215
8
        if (!column) {
216
6
            return false;
217
6
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
6
                                  CreateColumnFunc create_column_func) {
207
6
        using Function =
208
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
6
        const ColumnType* column =
211
6
                is_column_nullable(*data)
212
6
                        ? check_and_get_column<ColumnType>(
213
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
6
                        : check_and_get_column<ColumnType>(&*data);
215
6
        if (!column) {
216
4
            return false;
217
4
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
4
                                  CreateColumnFunc create_column_func) {
207
4
        using Function =
208
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
4
        const ColumnType* column =
211
4
                is_column_nullable(*data)
212
4
                        ? check_and_get_column<ColumnType>(
213
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
4
                        : check_and_get_column<ColumnType>(&*data);
215
4
        if (!column) {
216
2
            return false;
217
2
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
2
                                  CreateColumnFunc create_column_func) {
207
2
        using Function =
208
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
2
        const ColumnType* column =
211
2
                is_column_nullable(*data)
212
2
                        ? check_and_get_column<ColumnType>(
213
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
2
                        : check_and_get_column<ColumnType>(&*data);
215
2
        if (!column) {
216
0
            return false;
217
0
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
12
            return false;
217
12
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
12
                                  CreateColumnFunc create_column_func) {
207
12
        using Function =
208
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
12
        const ColumnType* column =
211
12
                is_column_nullable(*data)
212
12
                        ? check_and_get_column<ColumnType>(
213
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
12
                        : check_and_get_column<ColumnType>(&*data);
215
12
        if (!column) {
216
10
            return false;
217
10
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
8
            return false;
217
8
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
8
                                  CreateColumnFunc create_column_func) {
207
8
        using Function =
208
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
8
        const ColumnType* column =
211
8
                is_column_nullable(*data)
212
8
                        ? check_and_get_column<ColumnType>(
213
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
8
                        : check_and_get_column<ColumnType>(&*data);
215
8
        if (!column) {
216
6
            return false;
217
6
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
6
                                  CreateColumnFunc create_column_func) {
207
6
        using Function =
208
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
6
        const ColumnType* column =
211
6
                is_column_nullable(*data)
212
6
                        ? check_and_get_column<ColumnType>(
213
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
6
                        : check_and_get_column<ColumnType>(&*data);
215
6
        if (!column) {
216
4
            return false;
217
4
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
206
4
                                  CreateColumnFunc create_column_func) {
207
4
        using Function =
208
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
4
        const ColumnType* column =
211
4
                is_column_nullable(*data)
212
4
                        ? check_and_get_column<ColumnType>(
213
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
4
                        : check_and_get_column<ColumnType>(&*data);
215
4
        if (!column) {
216
2
            return false;
217
2
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
2
                                  CreateColumnFunc create_column_func) {
207
2
        using Function =
208
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
2
        const ColumnType* column =
211
2
                is_column_nullable(*data)
212
2
                        ? check_and_get_column<ColumnType>(
213
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
2
                        : check_and_get_column<ColumnType>(&*data);
215
2
        if (!column) {
216
0
            return false;
217
0
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
10
            return false;
217
10
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
10
            return false;
217
10
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
10
            return false;
217
10
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
8
            return false;
217
8
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
8
                                  CreateColumnFunc create_column_func) {
207
8
        using Function =
208
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
8
        const ColumnType* column =
211
8
                is_column_nullable(*data)
212
8
                        ? check_and_get_column<ColumnType>(
213
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
8
                        : check_and_get_column<ColumnType>(&*data);
215
8
        if (!column) {
216
6
            return false;
217
6
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
6
                                  CreateColumnFunc create_column_func) {
207
6
        using Function =
208
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
6
        const ColumnType* column =
211
6
                is_column_nullable(*data)
212
6
                        ? check_and_get_column<ColumnType>(
213
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
6
                        : check_and_get_column<ColumnType>(&*data);
215
6
        if (!column) {
216
4
            return false;
217
4
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
4
                                  CreateColumnFunc create_column_func) {
207
4
        using Function =
208
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
4
        const ColumnType* column =
211
4
                is_column_nullable(*data)
212
4
                        ? check_and_get_column<ColumnType>(
213
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
4
                        : check_and_get_column<ColumnType>(&*data);
215
4
        if (!column) {
216
2
            return false;
217
2
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
2
                                  CreateColumnFunc create_column_func) {
207
2
        using Function =
208
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
2
        const ColumnType* column =
211
2
                is_column_nullable(*data)
212
2
                        ? check_and_get_column<ColumnType>(
213
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
2
                        : check_and_get_column<ColumnType>(&*data);
215
2
        if (!column) {
216
0
            return false;
217
0
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
18
                                  CreateColumnFunc create_column_func) {
207
18
        using Function =
208
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
18
        const ColumnType* column =
211
18
                is_column_nullable(*data)
212
18
                        ? check_and_get_column<ColumnType>(
213
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
18
                        : check_and_get_column<ColumnType>(&*data);
215
18
        if (!column) {
216
16
            return false;
217
16
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
16
                                  CreateColumnFunc create_column_func) {
207
16
        using Function =
208
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
16
        const ColumnType* column =
211
16
                is_column_nullable(*data)
212
16
                        ? check_and_get_column<ColumnType>(
213
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
16
                        : check_and_get_column<ColumnType>(&*data);
215
16
        if (!column) {
216
14
            return false;
217
14
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
12
            return false;
217
12
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
12
                                  CreateColumnFunc create_column_func) {
207
12
        using Function =
208
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
12
        const ColumnType* column =
211
12
                is_column_nullable(*data)
212
12
                        ? check_and_get_column<ColumnType>(
213
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
12
                        : check_and_get_column<ColumnType>(&*data);
215
12
        if (!column) {
216
10
            return false;
217
10
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
8
            return false;
217
8
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
8
                                  CreateColumnFunc create_column_func) {
207
8
        using Function =
208
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
8
        const ColumnType* column =
211
8
                is_column_nullable(*data)
212
8
                        ? check_and_get_column<ColumnType>(
213
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
8
                        : check_and_get_column<ColumnType>(&*data);
215
8
        if (!column) {
216
6
            return false;
217
6
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
6
                                  CreateColumnFunc create_column_func) {
207
6
        using Function =
208
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
6
        const ColumnType* column =
211
6
                is_column_nullable(*data)
212
6
                        ? check_and_get_column<ColumnType>(
213
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
6
                        : check_and_get_column<ColumnType>(&*data);
215
6
        if (!column) {
216
4
            return false;
217
4
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
4
                                  CreateColumnFunc create_column_func) {
207
4
        using Function =
208
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
4
        const ColumnType* column =
211
4
                is_column_nullable(*data)
212
4
                        ? check_and_get_column<ColumnType>(
213
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
4
                        : check_and_get_column<ColumnType>(&*data);
215
4
        if (!column) {
216
2
            return false;
217
2
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
2
                                  CreateColumnFunc create_column_func) {
207
2
        using Function =
208
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
2
        const ColumnType* column =
211
2
                is_column_nullable(*data)
212
2
                        ? check_and_get_column<ColumnType>(
213
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
2
                        : check_and_get_column<ColumnType>(&*data);
215
2
        if (!column) {
216
0
            return false;
217
0
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
18
                                  CreateColumnFunc create_column_func) {
207
18
        using Function =
208
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
18
        const ColumnType* column =
211
18
                is_column_nullable(*data)
212
18
                        ? check_and_get_column<ColumnType>(
213
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
18
                        : check_and_get_column<ColumnType>(&*data);
215
18
        if (!column) {
216
16
            return false;
217
16
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
16
                                  CreateColumnFunc create_column_func) {
207
16
        using Function =
208
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
16
        const ColumnType* column =
211
16
                is_column_nullable(*data)
212
16
                        ? check_and_get_column<ColumnType>(
213
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
16
                        : check_and_get_column<ColumnType>(&*data);
215
16
        if (!column) {
216
14
            return false;
217
14
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
14
            return false;
217
14
        }
218
219
0
        ColumnPtr res_column = create_column_func(column);
220
0
        res_column = make_nullable(res_column);
221
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
0
        auto guard = AggregateFunctionGuard(function.get());
225
0
        Arena arena;
226
0
        auto nullable_column = make_nullable(data->get_ptr());
227
0
        const IColumn* columns[] = {nullable_column.get()};
228
0
        function->check_input_columns_type(columns);
229
0
        function->check_result_column_type(*res_column);
230
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
0
            auto start = offsets[i - 1]; // -1 is ok.
232
0
            auto end = offsets[i];
233
0
            bool is_empty = (start == end);
234
0
            if (is_empty) {
235
0
                res_column->assert_mutable()->insert_default();
236
0
                continue;
237
0
            }
238
0
            function->reset(guard.data());
239
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
0
                                      is_column_nullable(*data));
241
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
0
        }
243
0
        res_ptr = std::move(res_column);
244
0
        return true;
245
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
206
14
                                  CreateColumnFunc create_column_func) {
207
14
        using Function =
208
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
14
        const ColumnType* column =
211
14
                is_column_nullable(*data)
212
14
                        ? check_and_get_column<ColumnType>(
213
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
14
                        : check_and_get_column<ColumnType>(&*data);
215
14
        if (!column) {
216
12
            return false;
217
12
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
12
                                  CreateColumnFunc create_column_func) {
207
12
        using Function =
208
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
12
        const ColumnType* column =
211
12
                is_column_nullable(*data)
212
12
                        ? check_and_get_column<ColumnType>(
213
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
12
                        : check_and_get_column<ColumnType>(&*data);
215
12
        if (!column) {
216
10
            return false;
217
10
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
10
                                  CreateColumnFunc create_column_func) {
207
10
        using Function =
208
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
10
        const ColumnType* column =
211
10
                is_column_nullable(*data)
212
10
                        ? check_and_get_column<ColumnType>(
213
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
10
                        : check_and_get_column<ColumnType>(&*data);
215
10
        if (!column) {
216
8
            return false;
217
8
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
8
                                  CreateColumnFunc create_column_func) {
207
8
        using Function =
208
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
8
        const ColumnType* column =
211
8
                is_column_nullable(*data)
212
8
                        ? check_and_get_column<ColumnType>(
213
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
8
                        : check_and_get_column<ColumnType>(&*data);
215
8
        if (!column) {
216
6
            return false;
217
6
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
6
                                  CreateColumnFunc create_column_func) {
207
6
        using Function =
208
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
6
        const ColumnType* column =
211
6
                is_column_nullable(*data)
212
6
                        ? check_and_get_column<ColumnType>(
213
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
6
                        : check_and_get_column<ColumnType>(&*data);
215
6
        if (!column) {
216
4
            return false;
217
4
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
4
                                  CreateColumnFunc create_column_func) {
207
4
        using Function =
208
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
4
        const ColumnType* column =
211
4
                is_column_nullable(*data)
212
4
                        ? check_and_get_column<ColumnType>(
213
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
4
                        : check_and_get_column<ColumnType>(&*data);
215
4
        if (!column) {
216
2
            return false;
217
2
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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
206
2
                                  CreateColumnFunc create_column_func) {
207
2
        using Function =
208
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
209
210
2
        const ColumnType* column =
211
2
                is_column_nullable(*data)
212
2
                        ? check_and_get_column<ColumnType>(
213
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
214
2
                        : check_and_get_column<ColumnType>(&*data);
215
2
        if (!column) {
216
0
            return false;
217
0
        }
218
219
2
        ColumnPtr res_column = create_column_func(column);
220
2
        res_column = make_nullable(res_column);
221
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
222
223
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
224
2
        auto guard = AggregateFunctionGuard(function.get());
225
2
        Arena arena;
226
2
        auto nullable_column = make_nullable(data->get_ptr());
227
2
        const IColumn* columns[] = {nullable_column.get()};
228
2
        function->check_input_columns_type(columns);
229
2
        function->check_result_column_type(*res_column);
230
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
231
5
            auto start = offsets[i - 1]; // -1 is ok.
232
5
            auto end = offsets[i];
233
5
            bool is_empty = (start == end);
234
5
            if (is_empty) {
235
2
                res_column->assert_mutable()->insert_default();
236
2
                continue;
237
2
            }
238
3
            function->reset(guard.data());
239
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
240
3
                                      is_column_nullable(*data));
241
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
242
3
        }
243
2
        res_ptr = std::move(res_column);
244
2
        return true;
245
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_
246
247
    template <PrimitiveType Element>
248
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
249
436
                             const ColumnArray::Offsets64& offsets) {
250
436
        if constexpr (is_string_type(Element)) {
251
0
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
0
                operation == AggregateOperation::AVERAGE) {
253
0
                return false;
254
0
            }
255
256
0
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
0
                return ColumnString::create();
258
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_
259
260
0
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
0
                                                                            offsets, create_column);
262
436
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
0
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
0
                return false;
269
436
            } else {
270
436
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
436
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
436
                        operation>::template TypeTraits<Element>::ResultType;
273
436
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
436
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
74
                    if constexpr (is_decimal(Element)) {
277
0
                        return ColVecResultType::create(0, column->get_scale());
278
74
                    } else {
279
74
                        return ColVecResultType::create();
280
74
                    }
281
74
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
                    if constexpr (is_decimal(Element)) {
277
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
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_
282
283
436
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
436
                        res_ptr, type, data, offsets, create_column);
285
436
            }
286
436
        }
287
436
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
12
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
12
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
12
            } else {
270
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
12
                        operation>::template TypeTraits<Element>::ResultType;
273
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
12
                    if constexpr (is_decimal(Element)) {
277
12
                        return ColVecResultType::create(0, column->get_scale());
278
12
                    } else {
279
12
                        return ColVecResultType::create();
280
12
                    }
281
12
                };
282
283
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
12
                        res_ptr, type, data, offsets, create_column);
285
12
            }
286
12
        }
287
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
8
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
8
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
8
            } else {
270
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
8
                        operation>::template TypeTraits<Element>::ResultType;
273
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
8
                    if constexpr (is_decimal(Element)) {
277
8
                        return ColVecResultType::create(0, column->get_scale());
278
8
                    } else {
279
8
                        return ColVecResultType::create();
280
8
                    }
281
8
                };
282
283
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
8
                        res_ptr, type, data, offsets, create_column);
285
8
            }
286
8
        }
287
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
6
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
6
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
6
            } else {
270
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
6
                        operation>::template TypeTraits<Element>::ResultType;
273
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
6
                    if constexpr (is_decimal(Element)) {
277
6
                        return ColVecResultType::create(0, column->get_scale());
278
6
                    } else {
279
6
                        return ColVecResultType::create();
280
6
                    }
281
6
                };
282
283
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
6
                        res_ptr, type, data, offsets, create_column);
285
6
            }
286
6
        }
287
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
4
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
4
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
4
            } else {
270
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
4
                        operation>::template TypeTraits<Element>::ResultType;
273
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
4
                    if constexpr (is_decimal(Element)) {
277
4
                        return ColVecResultType::create(0, column->get_scale());
278
4
                    } else {
279
4
                        return ColVecResultType::create();
280
4
                    }
281
4
                };
282
283
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
4
                        res_ptr, type, data, offsets, create_column);
285
4
            }
286
4
        }
287
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
2
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
2
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
2
            } else {
270
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
2
                        operation>::template TypeTraits<Element>::ResultType;
273
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
2
                    if constexpr (is_decimal(Element)) {
277
2
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
282
283
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
2
                        res_ptr, type, data, offsets, create_column);
285
2
            }
286
2
        }
287
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
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
12
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
12
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
12
            } else {
270
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
12
                        operation>::template TypeTraits<Element>::ResultType;
273
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
12
                    if constexpr (is_decimal(Element)) {
277
12
                        return ColVecResultType::create(0, column->get_scale());
278
12
                    } else {
279
12
                        return ColVecResultType::create();
280
12
                    }
281
12
                };
282
283
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
12
                        res_ptr, type, data, offsets, create_column);
285
12
            }
286
12
        }
287
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
8
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
8
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
8
            } else {
270
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
8
                        operation>::template TypeTraits<Element>::ResultType;
273
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
8
                    if constexpr (is_decimal(Element)) {
277
8
                        return ColVecResultType::create(0, column->get_scale());
278
8
                    } else {
279
8
                        return ColVecResultType::create();
280
8
                    }
281
8
                };
282
283
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
8
                        res_ptr, type, data, offsets, create_column);
285
8
            }
286
8
        }
287
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
6
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
6
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
6
            } else {
270
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
6
                        operation>::template TypeTraits<Element>::ResultType;
273
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
6
                    if constexpr (is_decimal(Element)) {
277
6
                        return ColVecResultType::create(0, column->get_scale());
278
6
                    } else {
279
6
                        return ColVecResultType::create();
280
6
                    }
281
6
                };
282
283
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
6
                        res_ptr, type, data, offsets, create_column);
285
6
            }
286
6
        }
287
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
4
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
4
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
4
            } else {
270
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
4
                        operation>::template TypeTraits<Element>::ResultType;
273
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
4
                    if constexpr (is_decimal(Element)) {
277
4
                        return ColVecResultType::create(0, column->get_scale());
278
4
                    } else {
279
4
                        return ColVecResultType::create();
280
4
                    }
281
4
                };
282
283
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
4
                        res_ptr, type, data, offsets, create_column);
285
4
            }
286
4
        }
287
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
2
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
2
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
2
            } else {
270
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
2
                        operation>::template TypeTraits<Element>::ResultType;
273
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
2
                    if constexpr (is_decimal(Element)) {
277
2
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
282
283
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
2
                        res_ptr, type, data, offsets, create_column);
285
2
            }
286
2
        }
287
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
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
8
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
8
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
8
            } else {
270
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
8
                        operation>::template TypeTraits<Element>::ResultType;
273
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
8
                    if constexpr (is_decimal(Element)) {
277
8
                        return ColVecResultType::create(0, column->get_scale());
278
8
                    } else {
279
8
                        return ColVecResultType::create();
280
8
                    }
281
8
                };
282
283
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
8
                        res_ptr, type, data, offsets, create_column);
285
8
            }
286
8
        }
287
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
6
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
6
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
6
            } else {
270
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
6
                        operation>::template TypeTraits<Element>::ResultType;
273
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
6
                    if constexpr (is_decimal(Element)) {
277
6
                        return ColVecResultType::create(0, column->get_scale());
278
6
                    } else {
279
6
                        return ColVecResultType::create();
280
6
                    }
281
6
                };
282
283
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
6
                        res_ptr, type, data, offsets, create_column);
285
6
            }
286
6
        }
287
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
4
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
4
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
4
            } else {
270
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
4
                        operation>::template TypeTraits<Element>::ResultType;
273
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
4
                    if constexpr (is_decimal(Element)) {
277
4
                        return ColVecResultType::create(0, column->get_scale());
278
4
                    } else {
279
4
                        return ColVecResultType::create();
280
4
                    }
281
4
                };
282
283
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
4
                        res_ptr, type, data, offsets, create_column);
285
4
            }
286
4
        }
287
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
2
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
2
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
2
            } else {
270
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
2
                        operation>::template TypeTraits<Element>::ResultType;
273
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
2
                    if constexpr (is_decimal(Element)) {
277
2
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
282
283
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
2
                        res_ptr, type, data, offsets, create_column);
285
2
            }
286
2
        }
287
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
249
18
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
18
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
18
            } else {
270
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
18
                        operation>::template TypeTraits<Element>::ResultType;
273
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
18
                    if constexpr (is_decimal(Element)) {
277
18
                        return ColVecResultType::create(0, column->get_scale());
278
18
                    } else {
279
18
                        return ColVecResultType::create();
280
18
                    }
281
18
                };
282
283
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
18
                        res_ptr, type, data, offsets, create_column);
285
18
            }
286
18
        }
287
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
16
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
16
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
16
            } else {
270
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
16
                        operation>::template TypeTraits<Element>::ResultType;
273
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
16
                    if constexpr (is_decimal(Element)) {
277
16
                        return ColVecResultType::create(0, column->get_scale());
278
16
                    } else {
279
16
                        return ColVecResultType::create();
280
16
                    }
281
16
                };
282
283
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
16
                        res_ptr, type, data, offsets, create_column);
285
16
            }
286
16
        }
287
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
12
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
12
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
12
            } else {
270
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
12
                        operation>::template TypeTraits<Element>::ResultType;
273
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
12
                    if constexpr (is_decimal(Element)) {
277
12
                        return ColVecResultType::create(0, column->get_scale());
278
12
                    } else {
279
12
                        return ColVecResultType::create();
280
12
                    }
281
12
                };
282
283
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
12
                        res_ptr, type, data, offsets, create_column);
285
12
            }
286
12
        }
287
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
8
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
8
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
8
            } else {
270
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
8
                        operation>::template TypeTraits<Element>::ResultType;
273
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
8
                    if constexpr (is_decimal(Element)) {
277
8
                        return ColVecResultType::create(0, column->get_scale());
278
8
                    } else {
279
8
                        return ColVecResultType::create();
280
8
                    }
281
8
                };
282
283
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
8
                        res_ptr, type, data, offsets, create_column);
285
8
            }
286
8
        }
287
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
6
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
6
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
6
            } else {
270
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
6
                        operation>::template TypeTraits<Element>::ResultType;
273
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
6
                    if constexpr (is_decimal(Element)) {
277
6
                        return ColVecResultType::create(0, column->get_scale());
278
6
                    } else {
279
6
                        return ColVecResultType::create();
280
6
                    }
281
6
                };
282
283
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
6
                        res_ptr, type, data, offsets, create_column);
285
6
            }
286
6
        }
287
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
4
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
4
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
4
            } else {
270
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
4
                        operation>::template TypeTraits<Element>::ResultType;
273
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
4
                    if constexpr (is_decimal(Element)) {
277
4
                        return ColVecResultType::create(0, column->get_scale());
278
4
                    } else {
279
4
                        return ColVecResultType::create();
280
4
                    }
281
4
                };
282
283
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
4
                        res_ptr, type, data, offsets, create_column);
285
4
            }
286
4
        }
287
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
2
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
2
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
2
            } else {
270
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
2
                        operation>::template TypeTraits<Element>::ResultType;
273
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
2
                    if constexpr (is_decimal(Element)) {
277
2
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
282
283
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
2
                        res_ptr, type, data, offsets, create_column);
285
2
            }
286
2
        }
287
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
249
18
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
18
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
18
            } else {
270
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
18
                        operation>::template TypeTraits<Element>::ResultType;
273
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
18
                    if constexpr (is_decimal(Element)) {
277
18
                        return ColVecResultType::create(0, column->get_scale());
278
18
                    } else {
279
18
                        return ColVecResultType::create();
280
18
                    }
281
18
                };
282
283
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
18
                        res_ptr, type, data, offsets, create_column);
285
18
            }
286
18
        }
287
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
16
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
16
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
16
            } else {
270
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
16
                        operation>::template TypeTraits<Element>::ResultType;
273
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
16
                    if constexpr (is_decimal(Element)) {
277
16
                        return ColVecResultType::create(0, column->get_scale());
278
16
                    } else {
279
16
                        return ColVecResultType::create();
280
16
                    }
281
16
                };
282
283
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
16
                        res_ptr, type, data, offsets, create_column);
285
16
            }
286
16
        }
287
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE44EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
14
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
14
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
14
            } else {
270
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
14
                        operation>::template TypeTraits<Element>::ResultType;
273
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
14
                    if constexpr (is_decimal(Element)) {
277
14
                        return ColVecResultType::create(0, column->get_scale());
278
14
                    } else {
279
14
                        return ColVecResultType::create();
280
14
                    }
281
14
                };
282
283
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
14
                        res_ptr, type, data, offsets, create_column);
285
14
            }
286
14
        }
287
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
12
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
12
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
12
            } else {
270
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
12
                        operation>::template TypeTraits<Element>::ResultType;
273
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
12
                    if constexpr (is_decimal(Element)) {
277
12
                        return ColVecResultType::create(0, column->get_scale());
278
12
                    } else {
279
12
                        return ColVecResultType::create();
280
12
                    }
281
12
                };
282
283
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
12
                        res_ptr, type, data, offsets, create_column);
285
12
            }
286
12
        }
287
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
10
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
10
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
10
            } else {
270
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
10
                        operation>::template TypeTraits<Element>::ResultType;
273
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
10
                    if constexpr (is_decimal(Element)) {
277
10
                        return ColVecResultType::create(0, column->get_scale());
278
10
                    } else {
279
10
                        return ColVecResultType::create();
280
10
                    }
281
10
                };
282
283
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
10
                        res_ptr, type, data, offsets, create_column);
285
10
            }
286
10
        }
287
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
8
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
8
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
8
            } else {
270
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
8
                        operation>::template TypeTraits<Element>::ResultType;
273
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
8
                    if constexpr (is_decimal(Element)) {
277
8
                        return ColVecResultType::create(0, column->get_scale());
278
8
                    } else {
279
8
                        return ColVecResultType::create();
280
8
                    }
281
8
                };
282
283
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
8
                        res_ptr, type, data, offsets, create_column);
285
8
            }
286
8
        }
287
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
6
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
6
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
6
            } else {
270
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
6
                        operation>::template TypeTraits<Element>::ResultType;
273
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
6
                    if constexpr (is_decimal(Element)) {
277
6
                        return ColVecResultType::create(0, column->get_scale());
278
6
                    } else {
279
6
                        return ColVecResultType::create();
280
6
                    }
281
6
                };
282
283
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
6
                        res_ptr, type, data, offsets, create_column);
285
6
            }
286
6
        }
287
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
4
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
4
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
4
            } else {
270
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
4
                        operation>::template TypeTraits<Element>::ResultType;
273
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
4
                    if constexpr (is_decimal(Element)) {
277
4
                        return ColVecResultType::create(0, column->get_scale());
278
4
                    } else {
279
4
                        return ColVecResultType::create();
280
4
                    }
281
4
                };
282
283
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
4
                        res_ptr, type, data, offsets, create_column);
285
4
            }
286
4
        }
287
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
249
2
                             const ColumnArray::Offsets64& offsets) {
250
        if constexpr (is_string_type(Element)) {
251
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
252
                operation == AggregateOperation::AVERAGE) {
253
                return false;
254
            }
255
256
            auto create_column = [](const ColumnString*) -> ColumnPtr {
257
                return ColumnString::create();
258
            };
259
260
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
261
                                                                            offsets, create_column);
262
2
        } else {
263
            if constexpr ((operation == AggregateOperation::SUM ||
264
                           operation == AggregateOperation::PRODUCT ||
265
                           operation == AggregateOperation::AVERAGE) &&
266
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
267
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
268
                return false;
269
2
            } else {
270
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
271
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
272
2
                        operation>::template TypeTraits<Element>::ResultType;
273
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
274
275
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
276
2
                    if constexpr (is_decimal(Element)) {
277
2
                        return ColVecResultType::create(0, column->get_scale());
278
2
                    } else {
279
2
                        return ColVecResultType::create();
280
2
                    }
281
2
                };
282
283
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
284
2
                        res_ptr, type, data, offsets, create_column);
285
2
            }
286
2
        }
287
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
288
};
289
290
struct NameArrayMin {
291
    static constexpr auto name = "array_min";
292
};
293
294
template <>
295
struct ArrayAggregateFunctionCreator<AggregateOperation::MIN,
296
                                     AggregateFunctionTraits<AggregateOperation::MIN>> {
297
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
298
36
            -> AggregateFunctionPtr {
299
36
        return create_aggregate_function_single_value<AggregateFunctionMinData>(
300
36
                NameArrayMin::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
301
36
                true, attr);
302
36
    }
303
};
304
305
struct NameArrayMax {
306
    static constexpr auto name = "array_max";
307
};
308
309
template <>
310
struct ArrayAggregateFunctionCreator<AggregateOperation::MAX,
311
                                     AggregateFunctionTraits<AggregateOperation::MAX>> {
312
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
313
36
            -> AggregateFunctionPtr {
314
36
        return create_aggregate_function_single_value<AggregateFunctionMaxData>(
315
36
                NameArrayMax::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
316
36
                true, attr);
317
36
    }
318
};
319
320
struct NameArraySum {
321
    static constexpr auto name = "array_sum";
322
};
323
324
struct NameArrayAverage {
325
    static constexpr auto name = "array_avg";
326
};
327
struct NameArrayProduct {
328
    static constexpr auto name = "array_product";
329
};
330
331
using FunctionArrayMin =
332
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MIN>, NameArrayMin>;
333
using FunctionArrayMax =
334
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MAX>, NameArrayMax>;
335
using FunctionArraySum =
336
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::SUM>, NameArraySum>;
337
using FunctionArrayAverage =
338
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::AVERAGE>, NameArrayAverage>;
339
using FunctionArrayProduct =
340
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::PRODUCT>, NameArrayProduct>;
341
342
using FunctionArrayJoin = FunctionArrayMapped<ArrayJoinImpl, NameArrayJoin>;
343
344
template <AggregateOperation operation>
345
struct AggregateFunctionTraitsWithResultType;
346
347
template <>
348
struct AggregateFunctionTraitsWithResultType<AggregateOperation::SUM> {
349
    template <PrimitiveType InputType, PrimitiveType ResultType>
350
    struct TypeTraits {
351
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
352
        using Function = AggregateFunctionSum<InputType, ResultType, AggregateDataType>;
353
    };
354
};
355
template <>
356
struct AggregateFunctionTraitsWithResultType<AggregateOperation::AVERAGE> {
357
    template <PrimitiveType InputType, PrimitiveType ResultType>
358
    struct TypeTraits {
359
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
360
        using Function = AggregateFunctionAvg<InputType, ResultType, AggregateDataType>;
361
    };
362
};
363
template <>
364
struct AggregateFunctionTraitsWithResultType<AggregateOperation::PRODUCT> {
365
    template <PrimitiveType InputType, PrimitiveType ResultType>
366
    struct TypeTraits {
367
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
368
        using Function = AggregateFunctionProduct<InputType, ResultType, AggregateDataType>;
369
    };
370
};
371
template <typename Derived>
372
struct ArrayAggregateFunctionCreatorWithResultType {
373
    template <PrimitiveType InputType, PrimitiveType ResultType>
374
    using Function = typename Derived::template TypeTraits<InputType, ResultType>::Function;
375
376
    static auto create(const DataTypePtr& data_type_ptr, const DataTypePtr& result_type_ptr,
377
0
                       const AggregateFunctionAttr& attr) -> AggregateFunctionPtr {
378
0
        return creator_with_type_list<
379
0
                TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
380
0
                TYPE_DECIMAL256>::creator_with_result_type<Function>("",
381
0
                                                                     DataTypes {make_nullable(
382
0
                                                                             data_type_ptr)},
383
0
                                                                     result_type_ptr, true, attr);
384
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
385
};
386
template <AggregateOperation operation, PrimitiveType ResultType>
387
struct ArrayAggregateImplDecimalV3;
388
template <AggregateOperation operation, PrimitiveType ResultType>
389
    requires(operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
390
             operation == AggregateOperation::AVERAGE)
391
struct ArrayAggregateImplDecimalV3<operation, ResultType> {
392
    using column_type = ColumnArray;
393
    using data_type = DataTypeArray;
394
395
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
396
397
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
398
399
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
400
401
0
    static DataTypePtr get_return_type(const DataTypes& arguments) {
402
0
        throw doris::Exception(
403
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
404
0
                "get_return_type is not implemented for ArrayAggregateImplDecimalV3");
405
0
        __builtin_unreachable();
406
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
407
408
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
409
                          const DataTypePtr& result_type, const DataTypeArray* data_type_array,
410
0
                          const ColumnArray& array) {
411
0
        ColumnPtr res;
412
0
        DataTypePtr type = data_type_array->get_nested_type();
413
0
        const IColumn* data = array.get_data_ptr().get();
414
415
0
        const auto& offsets = array.get_offsets();
416
417
0
        if (execute_type<TYPE_DECIMAL32>(res, result_type, type, data, offsets) ||
418
0
            execute_type<TYPE_DECIMAL64>(res, result_type, type, data, offsets) ||
419
0
            execute_type<TYPE_DECIMAL128I>(res, result_type, type, data, offsets) ||
420
0
            execute_type<TYPE_DECIMAL256>(res, result_type, type, data, offsets)) {
421
0
            block.replace_by_position(result, std::move(res));
422
0
            return Status::OK();
423
0
        } else {
424
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
425
0
        }
426
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
427
428
    template <typename ColumnType, typename CreateColumnFunc>
429
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& result_type,
430
                                  const DataTypePtr& type, const IColumn* data,
431
                                  const ColumnArray::Offsets64& offsets,
432
0
                                  CreateColumnFunc create_column_func) {
433
0
        using Function = ArrayAggregateFunctionCreatorWithResultType<
434
0
                AggregateFunctionTraitsWithResultType<operation>>;
435
436
0
        const ColumnType* column =
437
0
                is_column_nullable(*data)
438
0
                        ? check_and_get_column<ColumnType>(
439
0
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
440
0
                        : check_and_get_column<ColumnType>(&*data);
441
0
        if (!column) {
442
0
            return false;
443
0
        }
444
445
0
        ColumnPtr res_column = create_column_func(column);
446
0
        res_column = make_nullable(res_column);
447
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
448
449
0
        auto function = Function::create(type, result_type,
450
0
                                         {.is_window_function = false, .column_names = {}});
451
0
        auto guard = AggregateFunctionGuard(function.get());
452
0
        Arena arena;
453
0
        auto nullable_column = make_nullable(data->get_ptr());
454
0
        const IColumn* columns[] = {nullable_column.get()};
455
0
        function->check_input_columns_type(columns);
456
0
        function->check_result_column_type(*res_column);
457
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
458
0
            auto start = offsets[i - 1]; // -1 is ok.
459
0
            auto end = offsets[i];
460
0
            bool is_empty = (start == end);
461
0
            if (is_empty) {
462
0
                res_column->assert_mutable()->insert_default();
463
0
                continue;
464
0
            }
465
0
            function->reset(guard.data());
466
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
467
0
                                      is_column_nullable(*data));
468
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
469
0
        }
470
0
        res_ptr = std::move(res_column);
471
0
        return true;
472
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_
473
474
    template <PrimitiveType Element>
475
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& result_type,
476
                             const DataTypePtr& type, const IColumn* data,
477
0
                             const ColumnArray::Offsets64& offsets) {
478
0
        using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
479
0
        using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
480
481
0
        auto create_column = [](const ColVecType* column) -> ColumnPtr {
482
0
            return ColVecResultType::create(0, column->get_scale());
483
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_
484
485
0
        return execute_type_impl<ColVecType, decltype(create_column)>(res_ptr, result_type, type,
486
0
                                                                      data, offsets, create_column);
487
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
488
};
489
490
template <typename Impl, typename Name>
491
class FunctionArrayAggDecimalV3 : public IFunction {
492
public:
493
    static constexpr auto name = Name::name;
494
    explicit FunctionArrayAggDecimalV3(DataTypePtr result_type)
495
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
496
497
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
498
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
499
0
                        uint32_t result, size_t input_rows_count) const override {
500
0
        const auto& typed_column = block.get_by_position(arguments[0]);
501
0
        auto ptr = typed_column.column->convert_to_full_column_if_const();
502
0
        const typename Impl::column_type* column_array;
503
0
        if (is_column_nullable(*ptr)) {
504
0
            column_array = assert_cast<const typename Impl::column_type*>(
505
0
                    assert_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
506
0
        } else {
507
0
            column_array = assert_cast<const typename Impl::column_type*>(ptr.get());
508
0
        }
509
0
        const auto* data_type_array =
510
0
                assert_cast<const DataTypeArray*>(remove_nullable(typed_column.type).get());
511
0
        return Impl::execute(block, arguments, result, _result_type, data_type_array,
512
0
                             *column_array);
513
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
514
515
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
516
517
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
518
519
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
520
521
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
522
0
        return Impl::get_return_type(arguments);
523
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
524
525
private:
526
    DataTypePtr _result_type;
527
};
528
template <PrimitiveType ResultType>
529
struct ArraySumDecimalV3Attributes {
530
    static_assert(is_decimalv3(ResultType));
531
    using AggregateDataType = AggregateFunctionSumData<ResultType>;
532
    using Function = FunctionArrayAggDecimalV3<
533
            ArrayAggregateImplDecimalV3<AggregateOperation::SUM, ResultType>, NameArraySum>;
534
};
535
template <PrimitiveType ResultType>
536
using ArraySumDecimalV3 = typename ArraySumDecimalV3Attributes<ResultType>::Function;
537
538
template <PrimitiveType ResultType>
539
struct ArrayAvgDecimalV3Attributes {
540
    static_assert(is_decimalv3(ResultType));
541
    using AggregateDataType = AggregateFunctionAvgData<ResultType>;
542
    using Function = FunctionArrayAggDecimalV3<
543
            ArrayAggregateImplDecimalV3<AggregateOperation::AVERAGE, ResultType>, NameArrayAverage>;
544
};
545
template <PrimitiveType ResultType>
546
using ArrayAvgDecimalV3 = typename ArrayAvgDecimalV3Attributes<ResultType>::Function;
547
548
template <PrimitiveType ResultType>
549
struct ArrayProductDecimalV3Attributes {
550
    static_assert(is_decimalv3(ResultType));
551
    using AggregateDataType = AggregateFunctionProductData<ResultType>;
552
    using Function = FunctionArrayAggDecimalV3<
553
            ArrayAggregateImplDecimalV3<AggregateOperation::PRODUCT, ResultType>, NameArrayProduct>;
554
};
555
template <PrimitiveType ResultType>
556
using ArrayProductDecimalV3 = typename ArrayProductDecimalV3Attributes<ResultType>::Function;
557
1
void register_array_reduce_agg_functions(SimpleFunctionFactory& factory) {
558
1
    {
559
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
560
14
            if (is_decimalv3(result_type->get_primitive_type())) {
561
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
562
0
                        ArraySumDecimalV3>(result_type);
563
14
            } else {
564
14
                FunctionBuilderPtr func =
565
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArraySum::create());
566
14
                return func;
567
14
            }
568
14
        };
569
1
        factory.register_array_agg_function(NameArraySum::name, creator);
570
1
    }
571
1
    {
572
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
573
14
            if (is_decimalv3(result_type->get_primitive_type())) {
574
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
575
0
                        ArrayAvgDecimalV3>(result_type);
576
14
            } else {
577
14
                FunctionBuilderPtr func =
578
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayAverage::create());
579
14
                return func;
580
14
            }
581
14
        };
582
1
        factory.register_array_agg_function(NameArrayAverage::name, creator);
583
1
    }
584
1
    {
585
10
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
586
10
            if (is_decimalv3(result_type->get_primitive_type())) {
587
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
588
0
                        ArrayProductDecimalV3>(result_type);
589
10
            } else {
590
10
                FunctionBuilderPtr func =
591
10
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayProduct::create());
592
10
                return func;
593
10
            }
594
10
        };
595
1
        factory.register_array_agg_function(NameArrayProduct::name, creator);
596
1
    }
597
1
}
598
599
1
void register_function_array_aggregation(SimpleFunctionFactory& factory) {
600
1
    factory.register_function<FunctionArrayMin>();
601
1
    factory.register_function<FunctionArrayMax>();
602
1
    factory.register_function<FunctionArrayJoin>();
603
1
    register_array_reduce_agg_functions(factory);
604
1
}
605
606
} // namespace doris