Coverage Report

Created: 2026-03-15 08:11

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/function/array/function_array_aggregation.cpp
Line
Count
Source
1
// Licensed to the Apache Software Foundation (ASF) under one
2
// or more contributor license agreements.  See the NOTICE file
3
// distributed with this work for additional information
4
// regarding copyright ownership.  The ASF licenses this file
5
// to you under the Apache License, Version 2.0 (the
6
// "License"); you may not use this file except in compliance
7
// with the License.  You may obtain a copy of the License at
8
//
9
//   http://www.apache.org/licenses/LICENSE-2.0
10
//
11
// Unless required by applicable law or agreed to in writing,
12
// software distributed under the License is distributed on an
13
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14
// KIND, either express or implied.  See the License for the
15
// specific language governing permissions and limitations
16
// under the License.
17
// This file is copied from
18
// https://github.com/ClickHouse/ClickHouse/blob/master/src/Functions/array/arrayAggregation.cpp
19
// and modified by Doris
20
21
#include <stddef.h>
22
#include <stdint.h>
23
24
#include <memory>
25
#include <type_traits>
26
#include <utility>
27
28
#include "common/exception.h"
29
#include "common/status.h"
30
#include "core/arena.h"
31
#include "core/block/block.h"
32
#include "core/block/column_numbers.h"
33
#include "core/column/column.h"
34
#include "core/column/column_array.h"
35
#include "core/column/column_decimal.h"
36
#include "core/column/column_nullable.h"
37
#include "core/data_type/data_type.h"
38
#include "core/data_type/data_type_array.h"
39
#include "core/data_type/data_type_nullable.h"
40
#include "core/data_type/define_primitive_type.h"
41
#include "core/data_type/primitive_type.h"
42
#include "core/types.h"
43
#include "exprs/aggregate/aggregate_function.h"
44
#include "exprs/aggregate/aggregate_function_avg.h"
45
#include "exprs/aggregate/aggregate_function_min_max.h"
46
#include "exprs/aggregate/aggregate_function_product.h"
47
#include "exprs/aggregate/aggregate_function_simple_factory.h"
48
#include "exprs/aggregate/aggregate_function_sum.h"
49
#include "exprs/aggregate/helpers.h"
50
#include "exprs/function/array/function_array_join.h"
51
#include "exprs/function/array/function_array_mapped.h"
52
#include "exprs/function/function.h"
53
#include "exprs/function/simple_function_factory.h"
54
#include "storage/predicate/column_predicate.h"
55
56
namespace doris {
57
58
enum class AggregateOperation { MIN, MAX, SUM, AVERAGE, PRODUCT };
59
60
// For MIN/MAX, the type of result is the same as the type of elements, we can omit the
61
// template specialization.
62
template <AggregateOperation operation>
63
struct AggregateFunctionTraits;
64
65
template <AggregateOperation operation>
66
    requires(operation == AggregateOperation::MIN || operation == AggregateOperation::MAX)
67
struct AggregateFunctionTraits<operation> {
68
    template <PrimitiveType Element>
69
    struct TypeTraits {
70
        static constexpr PrimitiveType ResultType = Element;
71
    };
72
};
73
74
template <>
75
struct AggregateFunctionTraits<AggregateOperation::SUM> {
76
    template <PrimitiveType Element>
77
    struct TypeTraits {
78
        static constexpr PrimitiveType ResultType =
79
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2
80
                : is_float_or_double(Element)
81
                        ? TYPE_DOUBLE
82
                        : (Element == TYPE_LARGEINT ? TYPE_LARGEINT : TYPE_BIGINT);
83
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
84
        using Function = AggregateFunctionSum<Element, ResultType, AggregateDataType>;
85
    };
86
};
87
template <>
88
struct AggregateFunctionTraits<AggregateOperation::AVERAGE> {
89
    template <PrimitiveType Element>
90
    struct TypeTraits {
91
        static constexpr PrimitiveType ResultType =
92
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : TYPE_DOUBLE;
93
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
94
        using Function = AggregateFunctionAvg<Element, ResultType, AggregateDataType>;
95
        static_assert(std::is_same_v<typename PrimitiveTypeTraits<ResultType>::CppType,
96
                                     typename Function::ResultType>,
97
                      "ResultType doesn't match.");
98
    };
99
};
100
101
template <>
102
struct AggregateFunctionTraits<AggregateOperation::PRODUCT> {
103
    template <PrimitiveType Element>
104
    struct TypeTraits {
105
        static constexpr PrimitiveType ResultType =
106
                Element == TYPE_DECIMALV2 ? TYPE_DECIMALV2 : Element;
107
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
108
        using Function = AggregateFunctionProduct<Element, ResultType, AggregateDataType>;
109
    };
110
};
111
112
template <AggregateOperation AggOp, typename Derived>
113
struct ArrayAggregateFunctionCreator {
114
    template <PrimitiveType T>
115
    using Function = typename Derived::template TypeTraits<T>::Function;
116
117
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
118
76
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
76
        } else {
126
76
            return creator_with_type_list<
127
76
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
76
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
76
                                                   attr);
130
76
        }
131
76
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE2ENS_23AggregateFunctionTraitsILS1_2EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE3ENS_23AggregateFunctionTraitsILS1_3EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
28
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
28
        } else {
126
28
            return creator_with_type_list<
127
28
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
28
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
28
                                                   attr);
130
28
        }
131
28
    }
_ZN5doris29ArrayAggregateFunctionCreatorILNS_18AggregateOperationE4ENS_23AggregateFunctionTraitsILS1_4EEEE6createERKSt10shared_ptrIKNS_9IDataTypeEERKNS_21AggregateFunctionAttrE
Line
Count
Source
118
20
            -> AggregateFunctionPtr {
119
        if constexpr (AggOp == AggregateOperation::MIN || AggOp == AggregateOperation::MAX) {
120
            return creator_with_type_list<
121
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
122
                    TYPE_DOUBLE, TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
123
                    TYPE_DECIMAL256>::create<Function>(DataTypes {make_nullable(data_type_ptr)},
124
                                                       true, attr);
125
20
        } else {
126
20
            return creator_with_type_list<
127
20
                    TYPE_TINYINT, TYPE_SMALLINT, TYPE_INT, TYPE_BIGINT, TYPE_LARGEINT, TYPE_FLOAT,
128
20
                    TYPE_DOUBLE>::create<Function>(DataTypes {make_nullable(data_type_ptr)}, true,
129
20
                                                   attr);
130
20
        }
131
20
    }
132
};
133
134
template <AggregateOperation operation>
135
struct ArrayAggregateImpl {
136
    using column_type = ColumnArray;
137
    using data_type = DataTypeArray;
138
139
76
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12_is_variadicEv
Line
Count
Source
139
14
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12_is_variadicEv
Line
Count
Source
139
10
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12_is_variadicEv
Line
Count
Source
139
19
    static bool _is_variadic() { return false; }
140
141
74
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE24_get_number_of_argumentsEv
Line
Count
Source
141
14
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE24_get_number_of_argumentsEv
Line
Count
Source
141
10
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE24_get_number_of_argumentsEv
Line
Count
Source
141
18
    static size_t _get_number_of_arguments() { return 1; }
142
143
    static bool skip_return_type_check() { return false; }
144
145
74
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
74
        using Function =
147
74
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
74
        const DataTypeArray* data_type_array =
149
74
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
74
        auto function = Function::create(data_type_array->get_nested_type(),
151
74
                                         {.is_window_function = false, .column_names = {}});
152
74
        if (function) {
153
74
            return function->get_return_type();
154
74
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
14
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
14
        using Function =
147
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
14
        const DataTypeArray* data_type_array =
149
14
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
14
        auto function = Function::create(data_type_array->get_nested_type(),
151
14
                                         {.is_window_function = false, .column_names = {}});
152
14
        if (function) {
153
14
            return function->get_return_type();
154
14
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
10
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
10
        using Function =
147
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
10
        const DataTypeArray* data_type_array =
149
10
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
10
        auto function = Function::create(data_type_array->get_nested_type(),
151
10
                                         {.is_window_function = false, .column_names = {}});
152
10
        if (function) {
153
10
            return function->get_return_type();
154
10
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE15get_return_typeERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
145
18
    static DataTypePtr get_return_type(const DataTypes& arguments) {
146
18
        using Function =
147
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
148
18
        const DataTypeArray* data_type_array =
149
18
                static_cast<const DataTypeArray*>(remove_nullable(arguments[0]).get());
150
18
        auto function = Function::create(data_type_array->get_nested_type(),
151
18
                                         {.is_window_function = false, .column_names = {}});
152
18
        if (function) {
153
18
            return function->get_return_type();
154
18
        } else {
155
0
            throw doris::Exception(ErrorCode::INVALID_ARGUMENT,
156
0
                                   "Unexpected type {} for aggregation {}",
157
0
                                   data_type_array->get_nested_type()->get_name(), operation);
158
0
        }
159
18
    }
160
161
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
162
74
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
74
        ColumnPtr res;
164
74
        DataTypePtr type = data_type_array->get_nested_type();
165
74
        const IColumn* data = array.get_data_ptr().get();
166
167
74
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
36
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
36
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
36
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
8
                block.replace_by_position(result, std::move(res));
174
8
                return Status::OK();
175
8
            }
176
36
        }
177
178
74
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
74
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
74
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
74
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
74
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
74
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
74
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
74
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
74
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
74
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
74
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
74
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
74
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
74
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
74
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
74
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
66
            block.replace_by_position(result, std::move(res));
195
66
            return Status::OK();
196
66
        } else {
197
8
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
8
        }
199
74
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
14
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
14
        ColumnPtr res;
164
14
        DataTypePtr type = data_type_array->get_nested_type();
165
14
        const IColumn* data = array.get_data_ptr().get();
166
167
14
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
14
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
14
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
14
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
14
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
14
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
14
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
14
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
14
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
14
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
14
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
14
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
14
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
14
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
14
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
10
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
10
        ColumnPtr res;
164
10
        DataTypePtr type = data_type_array->get_nested_type();
165
10
        const IColumn* data = array.get_data_ptr().get();
166
167
10
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
                block.replace_by_position(result, std::move(res));
174
                return Status::OK();
175
            }
176
        }
177
178
10
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
10
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
10
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
10
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
10
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
10
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
10
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
10
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
10
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
10
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
10
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
10
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
10
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
10
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
10
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
10
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
10
            block.replace_by_position(result, std::move(res));
195
10
            return Status::OK();
196
10
        } else {
197
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
0
        }
199
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
4
                block.replace_by_position(result, std::move(res));
174
4
                return Status::OK();
175
4
            }
176
18
        }
177
178
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
4
        }
199
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE7executeERNS_5BlockERKSt6vectorIjSaIjEEjPKNS_13DataTypeArrayERKNS_11ColumnArrayE
Line
Count
Source
162
18
                          const DataTypeArray* data_type_array, const ColumnArray& array) {
163
18
        ColumnPtr res;
164
18
        DataTypePtr type = data_type_array->get_nested_type();
165
18
        const IColumn* data = array.get_data_ptr().get();
166
167
18
        const auto& offsets = array.get_offsets();
168
        if constexpr (operation == AggregateOperation::MAX ||
169
18
                      operation == AggregateOperation::MIN) {
170
            // min/max can only be applied on ip type
171
18
            if (execute_type<TYPE_IPV4>(res, type, data, offsets) ||
172
18
                execute_type<TYPE_IPV6>(res, type, data, offsets)) {
173
4
                block.replace_by_position(result, std::move(res));
174
4
                return Status::OK();
175
4
            }
176
18
        }
177
178
18
        if (execute_type<TYPE_BOOLEAN>(res, type, data, offsets) ||
179
18
            execute_type<TYPE_TINYINT>(res, type, data, offsets) ||
180
18
            execute_type<TYPE_SMALLINT>(res, type, data, offsets) ||
181
18
            execute_type<TYPE_INT>(res, type, data, offsets) ||
182
18
            execute_type<TYPE_BIGINT>(res, type, data, offsets) ||
183
18
            execute_type<TYPE_LARGEINT>(res, type, data, offsets) ||
184
18
            execute_type<TYPE_FLOAT>(res, type, data, offsets) ||
185
18
            execute_type<TYPE_DOUBLE>(res, type, data, offsets) ||
186
18
            execute_type<TYPE_DECIMAL32>(res, type, data, offsets) ||
187
18
            execute_type<TYPE_DECIMAL64>(res, type, data, offsets) ||
188
18
            execute_type<TYPE_DECIMAL128I>(res, type, data, offsets) ||
189
18
            execute_type<TYPE_DECIMAL256>(res, type, data, offsets) ||
190
18
            execute_type<TYPE_DATEV2>(res, type, data, offsets) ||
191
18
            execute_type<TYPE_DATETIMEV2>(res, type, data, offsets) ||
192
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
194
14
            block.replace_by_position(result, std::move(res));
195
14
            return Status::OK();
196
14
        } else {
197
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
198
4
        }
199
18
    }
200
201
    template <typename ColumnType, typename CreateColumnFunc>
202
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
203
                                  const ColumnArray::Offsets64& offsets,
204
408
                                  CreateColumnFunc create_column_func) {
205
408
        using Function =
206
408
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
408
        const ColumnType* column =
209
408
                data->is_nullable()
210
408
                        ? check_and_get_column<ColumnType>(
211
408
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
408
                        : check_and_get_column<ColumnType>(&*data);
213
408
        if (!column) {
214
334
            return false;
215
334
        }
216
217
74
        ColumnPtr res_column = create_column_func(column);
218
74
        res_column = make_nullable(res_column);
219
74
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
74
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
74
        auto guard = AggregateFunctionGuard(function.get());
223
74
        Arena arena;
224
74
        auto nullable_column = make_nullable(data->get_ptr());
225
74
        const IColumn* columns[] = {nullable_column.get()};
226
259
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
185
            auto start = offsets[i - 1]; // -1 is ok.
228
185
            auto end = offsets[i];
229
185
            bool is_empty = (start == end);
230
185
            if (is_empty) {
231
74
                res_column->assume_mutable()->insert_default();
232
74
                continue;
233
74
            }
234
111
            function->reset(guard.data());
235
111
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
111
                                      data->is_nullable());
237
111
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
111
        }
239
74
        res_ptr = std::move(res_column);
240
74
        return true;
241
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                data->is_nullable()
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                data->is_nullable()
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                data->is_nullable()
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                data->is_nullable()
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                data->is_nullable()
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                data->is_nullable()
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                data->is_nullable()
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                data->is_nullable()
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                data->is_nullable()
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                data->is_nullable()
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
10
            return false;
215
10
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                data->is_nullable()
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                data->is_nullable()
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                data->is_nullable()
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                data->is_nullable()
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
18
                                  CreateColumnFunc create_column_func) {
205
18
        using Function =
206
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
18
        const ColumnType* column =
209
18
                data->is_nullable()
210
18
                        ? check_and_get_column<ColumnType>(
211
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
18
                        : check_and_get_column<ColumnType>(&*data);
213
18
        if (!column) {
214
16
            return false;
215
16
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
16
                                  CreateColumnFunc create_column_func) {
205
16
        using Function =
206
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
16
        const ColumnType* column =
209
16
                data->is_nullable()
210
16
                        ? check_and_get_column<ColumnType>(
211
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
16
                        : check_and_get_column<ColumnType>(&*data);
213
16
        if (!column) {
214
14
            return false;
215
14
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                data->is_nullable()
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                data->is_nullable()
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                data->is_nullable()
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                data->is_nullable()
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                data->is_nullable()
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
18
                                  CreateColumnFunc create_column_func) {
205
18
        using Function =
206
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
18
        const ColumnType* column =
209
18
                data->is_nullable()
210
18
                        ? check_and_get_column<ColumnType>(
211
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
18
                        : check_and_get_column<ColumnType>(&*data);
213
18
        if (!column) {
214
16
            return false;
215
16
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
16
                                  CreateColumnFunc create_column_func) {
205
16
        using Function =
206
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
16
        const ColumnType* column =
209
16
                data->is_nullable()
210
16
                        ? check_and_get_column<ColumnType>(
211
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
16
                        : check_and_get_column<ColumnType>(&*data);
213
16
        if (!column) {
214
14
            return false;
215
14
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
14
            return false;
215
14
        }
216
217
0
        ColumnPtr res_column = create_column_func(column);
218
0
        res_column = make_nullable(res_column);
219
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
0
        auto guard = AggregateFunctionGuard(function.get());
223
0
        Arena arena;
224
0
        auto nullable_column = make_nullable(data->get_ptr());
225
0
        const IColumn* columns[] = {nullable_column.get()};
226
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
0
            auto start = offsets[i - 1]; // -1 is ok.
228
0
            auto end = offsets[i];
229
0
            bool is_empty = (start == end);
230
0
            if (is_empty) {
231
0
                res_column->assume_mutable()->insert_default();
232
0
                continue;
233
0
            }
234
0
            function->reset(guard.data());
235
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
0
                                      data->is_nullable());
237
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
0
        }
239
0
        res_ptr = std::move(res_column);
240
0
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
14
                                  CreateColumnFunc create_column_func) {
205
14
        using Function =
206
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
14
        const ColumnType* column =
209
14
                data->is_nullable()
210
14
                        ? check_and_get_column<ColumnType>(
211
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
14
                        : check_and_get_column<ColumnType>(&*data);
213
14
        if (!column) {
214
12
            return false;
215
12
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
12
                                  CreateColumnFunc create_column_func) {
205
12
        using Function =
206
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
12
        const ColumnType* column =
209
12
                data->is_nullable()
210
12
                        ? check_and_get_column<ColumnType>(
211
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
12
                        : check_and_get_column<ColumnType>(&*data);
213
12
        if (!column) {
214
10
            return false;
215
10
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
10
                                  CreateColumnFunc create_column_func) {
205
10
        using Function =
206
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
10
        const ColumnType* column =
209
10
                data->is_nullable()
210
10
                        ? check_and_get_column<ColumnType>(
211
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
10
                        : check_and_get_column<ColumnType>(&*data);
213
10
        if (!column) {
214
8
            return false;
215
8
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
8
                                  CreateColumnFunc create_column_func) {
205
8
        using Function =
206
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
8
        const ColumnType* column =
209
8
                data->is_nullable()
210
8
                        ? check_and_get_column<ColumnType>(
211
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
8
                        : check_and_get_column<ColumnType>(&*data);
213
8
        if (!column) {
214
6
            return false;
215
6
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
6
                                  CreateColumnFunc create_column_func) {
205
6
        using Function =
206
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
6
        const ColumnType* column =
209
6
                data->is_nullable()
210
6
                        ? check_and_get_column<ColumnType>(
211
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
6
                        : check_and_get_column<ColumnType>(&*data);
213
6
        if (!column) {
214
4
            return false;
215
4
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
4
                                  CreateColumnFunc create_column_func) {
205
4
        using Function =
206
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
4
        const ColumnType* column =
209
4
                data->is_nullable()
210
4
                        ? check_and_get_column<ColumnType>(
211
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
4
                        : check_and_get_column<ColumnType>(&*data);
213
4
        if (!column) {
214
2
            return false;
215
2
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
204
2
                                  CreateColumnFunc create_column_func) {
205
2
        using Function =
206
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
207
208
2
        const ColumnType* column =
209
2
                data->is_nullable()
210
2
                        ? check_and_get_column<ColumnType>(
211
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
212
2
                        : check_and_get_column<ColumnType>(&*data);
213
2
        if (!column) {
214
0
            return false;
215
0
        }
216
217
2
        ColumnPtr res_column = create_column_func(column);
218
2
        res_column = make_nullable(res_column);
219
2
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
220
221
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
222
2
        auto guard = AggregateFunctionGuard(function.get());
223
2
        Arena arena;
224
2
        auto nullable_column = make_nullable(data->get_ptr());
225
2
        const IColumn* columns[] = {nullable_column.get()};
226
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
227
5
            auto start = offsets[i - 1]; // -1 is ok.
228
5
            auto end = offsets[i];
229
5
            bool is_empty = (start == end);
230
5
            if (is_empty) {
231
2
                res_column->assume_mutable()->insert_default();
232
2
                continue;
233
2
            }
234
3
            function->reset(guard.data());
235
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
236
3
                                      data->is_nullable());
237
3
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
238
3
        }
239
2
        res_ptr = std::move(res_column);
240
2
        return true;
241
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS5_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS5_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS5_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
242
243
    template <PrimitiveType Element>
244
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
245
408
                             const ColumnArray::Offsets64& offsets) {
246
408
        if constexpr (is_string_type(Element)) {
247
0
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
0
                operation == AggregateOperation::AVERAGE) {
249
0
                return false;
250
0
            }
251
252
0
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
0
                return ColumnString::create();
254
0
            };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
255
256
0
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
0
                                                                            offsets, create_column);
258
408
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
0
                           is_decimalv3(Element))) {
264
0
                return false;
265
408
            } else {
266
408
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
408
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
408
                        operation>::template TypeTraits<Element>::ResultType;
269
408
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
408
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
74
                    if constexpr (is_decimal(Element)) {
273
0
                        return ColVecResultType::create(0, column->get_scale());
274
74
                    } else {
275
74
                        return ColVecResultType::create();
276
74
                    }
277
74
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
                    if constexpr (is_decimal(Element)) {
273
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
278
279
408
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
408
                        res_ptr, type, data, offsets, create_column);
281
408
            }
282
408
        }
283
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
12
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
12
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
12
            } else {
266
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
12
                        operation>::template TypeTraits<Element>::ResultType;
269
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
12
                    if constexpr (is_decimal(Element)) {
273
12
                        return ColVecResultType::create(0, column->get_scale());
274
12
                    } else {
275
12
                        return ColVecResultType::create();
276
12
                    }
277
12
                };
278
279
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
12
                        res_ptr, type, data, offsets, create_column);
281
12
            }
282
12
        }
283
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
8
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
8
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
8
            } else {
266
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
8
                        operation>::template TypeTraits<Element>::ResultType;
269
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
8
                    if constexpr (is_decimal(Element)) {
273
8
                        return ColVecResultType::create(0, column->get_scale());
274
8
                    } else {
275
8
                        return ColVecResultType::create();
276
8
                    }
277
8
                };
278
279
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
8
                        res_ptr, type, data, offsets, create_column);
281
8
            }
282
8
        }
283
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
6
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
6
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
6
            } else {
266
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
6
                        operation>::template TypeTraits<Element>::ResultType;
269
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
6
                    if constexpr (is_decimal(Element)) {
273
6
                        return ColVecResultType::create(0, column->get_scale());
274
6
                    } else {
275
6
                        return ColVecResultType::create();
276
6
                    }
277
6
                };
278
279
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
6
                        res_ptr, type, data, offsets, create_column);
281
6
            }
282
6
        }
283
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
4
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
4
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
4
            } else {
266
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
4
                        operation>::template TypeTraits<Element>::ResultType;
269
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
4
                    if constexpr (is_decimal(Element)) {
273
4
                        return ColVecResultType::create(0, column->get_scale());
274
4
                    } else {
275
4
                        return ColVecResultType::create();
276
4
                    }
277
4
                };
278
279
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
4
                        res_ptr, type, data, offsets, create_column);
281
4
            }
282
4
        }
283
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
2
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
2
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
2
            } else {
266
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
2
                        operation>::template TypeTraits<Element>::ResultType;
269
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
2
                    if constexpr (is_decimal(Element)) {
273
2
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
278
279
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
2
                        res_ptr, type, data, offsets, create_column);
281
2
            }
282
2
        }
283
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
12
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
12
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
12
            } else {
266
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
12
                        operation>::template TypeTraits<Element>::ResultType;
269
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
12
                    if constexpr (is_decimal(Element)) {
273
12
                        return ColVecResultType::create(0, column->get_scale());
274
12
                    } else {
275
12
                        return ColVecResultType::create();
276
12
                    }
277
12
                };
278
279
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
12
                        res_ptr, type, data, offsets, create_column);
281
12
            }
282
12
        }
283
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
8
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
8
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
8
            } else {
266
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
8
                        operation>::template TypeTraits<Element>::ResultType;
269
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
8
                    if constexpr (is_decimal(Element)) {
273
8
                        return ColVecResultType::create(0, column->get_scale());
274
8
                    } else {
275
8
                        return ColVecResultType::create();
276
8
                    }
277
8
                };
278
279
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
8
                        res_ptr, type, data, offsets, create_column);
281
8
            }
282
8
        }
283
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
6
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
6
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
6
            } else {
266
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
6
                        operation>::template TypeTraits<Element>::ResultType;
269
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
6
                    if constexpr (is_decimal(Element)) {
273
6
                        return ColVecResultType::create(0, column->get_scale());
274
6
                    } else {
275
6
                        return ColVecResultType::create();
276
6
                    }
277
6
                };
278
279
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
6
                        res_ptr, type, data, offsets, create_column);
281
6
            }
282
6
        }
283
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
4
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
4
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
4
            } else {
266
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
4
                        operation>::template TypeTraits<Element>::ResultType;
269
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
4
                    if constexpr (is_decimal(Element)) {
273
4
                        return ColVecResultType::create(0, column->get_scale());
274
4
                    } else {
275
4
                        return ColVecResultType::create();
276
4
                    }
277
4
                };
278
279
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
4
                        res_ptr, type, data, offsets, create_column);
281
4
            }
282
4
        }
283
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
2
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
2
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
2
            } else {
266
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
2
                        operation>::template TypeTraits<Element>::ResultType;
269
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
2
                    if constexpr (is_decimal(Element)) {
273
2
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
278
279
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
2
                        res_ptr, type, data, offsets, create_column);
281
2
            }
282
2
        }
283
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
8
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
8
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
8
            } else {
266
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
8
                        operation>::template TypeTraits<Element>::ResultType;
269
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
8
                    if constexpr (is_decimal(Element)) {
273
8
                        return ColVecResultType::create(0, column->get_scale());
274
8
                    } else {
275
8
                        return ColVecResultType::create();
276
8
                    }
277
8
                };
278
279
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
8
                        res_ptr, type, data, offsets, create_column);
281
8
            }
282
8
        }
283
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
6
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
6
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
6
            } else {
266
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
6
                        operation>::template TypeTraits<Element>::ResultType;
269
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
6
                    if constexpr (is_decimal(Element)) {
273
6
                        return ColVecResultType::create(0, column->get_scale());
274
6
                    } else {
275
6
                        return ColVecResultType::create();
276
6
                    }
277
6
                };
278
279
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
6
                        res_ptr, type, data, offsets, create_column);
281
6
            }
282
6
        }
283
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
4
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
4
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
4
            } else {
266
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
4
                        operation>::template TypeTraits<Element>::ResultType;
269
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
4
                    if constexpr (is_decimal(Element)) {
273
4
                        return ColVecResultType::create(0, column->get_scale());
274
4
                    } else {
275
4
                        return ColVecResultType::create();
276
4
                    }
277
4
                };
278
279
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
4
                        res_ptr, type, data, offsets, create_column);
281
4
            }
282
4
        }
283
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
2
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
2
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
2
            } else {
266
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
2
                        operation>::template TypeTraits<Element>::ResultType;
269
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
2
                    if constexpr (is_decimal(Element)) {
273
2
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
278
279
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
2
                        res_ptr, type, data, offsets, create_column);
281
2
            }
282
2
        }
283
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
18
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
18
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
18
            } else {
266
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
18
                        operation>::template TypeTraits<Element>::ResultType;
269
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
18
                    if constexpr (is_decimal(Element)) {
273
18
                        return ColVecResultType::create(0, column->get_scale());
274
18
                    } else {
275
18
                        return ColVecResultType::create();
276
18
                    }
277
18
                };
278
279
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
18
                        res_ptr, type, data, offsets, create_column);
281
18
            }
282
18
        }
283
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
16
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
16
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
16
            } else {
266
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
16
                        operation>::template TypeTraits<Element>::ResultType;
269
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
16
                    if constexpr (is_decimal(Element)) {
273
16
                        return ColVecResultType::create(0, column->get_scale());
274
16
                    } else {
275
16
                        return ColVecResultType::create();
276
16
                    }
277
16
                };
278
279
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
16
                        res_ptr, type, data, offsets, create_column);
281
16
            }
282
16
        }
283
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
12
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
12
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
12
            } else {
266
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
12
                        operation>::template TypeTraits<Element>::ResultType;
269
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
12
                    if constexpr (is_decimal(Element)) {
273
12
                        return ColVecResultType::create(0, column->get_scale());
274
12
                    } else {
275
12
                        return ColVecResultType::create();
276
12
                    }
277
12
                };
278
279
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
12
                        res_ptr, type, data, offsets, create_column);
281
12
            }
282
12
        }
283
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
8
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
8
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
8
            } else {
266
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
8
                        operation>::template TypeTraits<Element>::ResultType;
269
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
8
                    if constexpr (is_decimal(Element)) {
273
8
                        return ColVecResultType::create(0, column->get_scale());
274
8
                    } else {
275
8
                        return ColVecResultType::create();
276
8
                    }
277
8
                };
278
279
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
8
                        res_ptr, type, data, offsets, create_column);
281
8
            }
282
8
        }
283
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
6
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
6
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
6
            } else {
266
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
6
                        operation>::template TypeTraits<Element>::ResultType;
269
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
6
                    if constexpr (is_decimal(Element)) {
273
6
                        return ColVecResultType::create(0, column->get_scale());
274
6
                    } else {
275
6
                        return ColVecResultType::create();
276
6
                    }
277
6
                };
278
279
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
6
                        res_ptr, type, data, offsets, create_column);
281
6
            }
282
6
        }
283
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
4
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
4
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
4
            } else {
266
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
4
                        operation>::template TypeTraits<Element>::ResultType;
269
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
4
                    if constexpr (is_decimal(Element)) {
273
4
                        return ColVecResultType::create(0, column->get_scale());
274
4
                    } else {
275
4
                        return ColVecResultType::create();
276
4
                    }
277
4
                };
278
279
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
4
                        res_ptr, type, data, offsets, create_column);
281
4
            }
282
4
        }
283
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
2
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
2
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
2
            } else {
266
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
2
                        operation>::template TypeTraits<Element>::ResultType;
269
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
2
                    if constexpr (is_decimal(Element)) {
273
2
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
278
279
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
2
                        res_ptr, type, data, offsets, create_column);
281
2
            }
282
2
        }
283
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
18
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
18
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
18
            } else {
266
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
18
                        operation>::template TypeTraits<Element>::ResultType;
269
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
18
                    if constexpr (is_decimal(Element)) {
273
18
                        return ColVecResultType::create(0, column->get_scale());
274
18
                    } else {
275
18
                        return ColVecResultType::create();
276
18
                    }
277
18
                };
278
279
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
18
                        res_ptr, type, data, offsets, create_column);
281
18
            }
282
18
        }
283
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
16
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
16
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
16
            } else {
266
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
16
                        operation>::template TypeTraits<Element>::ResultType;
269
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
16
                    if constexpr (is_decimal(Element)) {
273
16
                        return ColVecResultType::create(0, column->get_scale());
274
16
                    } else {
275
16
                        return ColVecResultType::create();
276
16
                    }
277
16
                };
278
279
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
16
                        res_ptr, type, data, offsets, create_column);
281
16
            }
282
16
        }
283
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
14
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
14
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
14
            } else {
266
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
14
                        operation>::template TypeTraits<Element>::ResultType;
269
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
14
                    if constexpr (is_decimal(Element)) {
273
14
                        return ColVecResultType::create(0, column->get_scale());
274
14
                    } else {
275
14
                        return ColVecResultType::create();
276
14
                    }
277
14
                };
278
279
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
14
                        res_ptr, type, data, offsets, create_column);
281
14
            }
282
14
        }
283
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
12
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
12
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
12
            } else {
266
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
12
                        operation>::template TypeTraits<Element>::ResultType;
269
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
12
                    if constexpr (is_decimal(Element)) {
273
12
                        return ColVecResultType::create(0, column->get_scale());
274
12
                    } else {
275
12
                        return ColVecResultType::create();
276
12
                    }
277
12
                };
278
279
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
12
                        res_ptr, type, data, offsets, create_column);
281
12
            }
282
12
        }
283
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
10
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
10
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
10
            } else {
266
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
10
                        operation>::template TypeTraits<Element>::ResultType;
269
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
10
                    if constexpr (is_decimal(Element)) {
273
10
                        return ColVecResultType::create(0, column->get_scale());
274
10
                    } else {
275
10
                        return ColVecResultType::create();
276
10
                    }
277
10
                };
278
279
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
10
                        res_ptr, type, data, offsets, create_column);
281
10
            }
282
10
        }
283
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
8
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
8
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
8
            } else {
266
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
8
                        operation>::template TypeTraits<Element>::ResultType;
269
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
8
                    if constexpr (is_decimal(Element)) {
273
8
                        return ColVecResultType::create(0, column->get_scale());
274
8
                    } else {
275
8
                        return ColVecResultType::create();
276
8
                    }
277
8
                };
278
279
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
8
                        res_ptr, type, data, offsets, create_column);
281
8
            }
282
8
        }
283
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
6
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
6
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
6
            } else {
266
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
6
                        operation>::template TypeTraits<Element>::ResultType;
269
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
6
                    if constexpr (is_decimal(Element)) {
273
6
                        return ColVecResultType::create(0, column->get_scale());
274
6
                    } else {
275
6
                        return ColVecResultType::create();
276
6
                    }
277
6
                };
278
279
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
6
                        res_ptr, type, data, offsets, create_column);
281
6
            }
282
6
        }
283
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
4
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
4
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
4
            } else {
266
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
4
                        operation>::template TypeTraits<Element>::ResultType;
269
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
4
                    if constexpr (is_decimal(Element)) {
273
4
                        return ColVecResultType::create(0, column->get_scale());
274
4
                    } else {
275
4
                        return ColVecResultType::create();
276
4
                    }
277
4
                };
278
279
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
4
                        res_ptr, type, data, offsets, create_column);
281
4
            }
282
4
        }
283
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Line
Count
Source
245
2
                             const ColumnArray::Offsets64& offsets) {
246
        if constexpr (is_string_type(Element)) {
247
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
248
                operation == AggregateOperation::AVERAGE) {
249
                return false;
250
            }
251
252
            auto create_column = [](const ColumnString*) -> ColumnPtr {
253
                return ColumnString::create();
254
            };
255
256
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
257
                                                                            offsets, create_column);
258
2
        } else {
259
            if constexpr ((operation == AggregateOperation::SUM ||
260
                           operation == AggregateOperation::PRODUCT ||
261
                           operation == AggregateOperation::AVERAGE) &&
262
                          (is_date_type(Element) || is_timestamptz_type(Element) ||
263
                           is_decimalv3(Element))) {
264
                return false;
265
2
            } else {
266
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
267
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
268
2
                        operation>::template TypeTraits<Element>::ResultType;
269
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
270
271
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
272
2
                    if constexpr (is_decimal(Element)) {
273
2
                        return ColVecResultType::create(0, column->get_scale());
274
2
                    } else {
275
2
                        return ColVecResultType::create();
276
2
                    }
277
2
                };
278
279
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
280
2
                        res_ptr, type, data, offsets, create_column);
281
2
            }
282
2
        }
283
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
284
};
285
286
struct NameArrayMin {
287
    static constexpr auto name = "array_min";
288
};
289
290
template <>
291
struct ArrayAggregateFunctionCreator<AggregateOperation::MIN,
292
                                     AggregateFunctionTraits<AggregateOperation::MIN>> {
293
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
294
36
            -> AggregateFunctionPtr {
295
36
        return create_aggregate_function_single_value<AggregateFunctionMinData>(
296
36
                NameArrayMin::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
297
36
                true, attr);
298
36
    }
299
};
300
301
struct NameArrayMax {
302
    static constexpr auto name = "array_max";
303
};
304
305
template <>
306
struct ArrayAggregateFunctionCreator<AggregateOperation::MAX,
307
                                     AggregateFunctionTraits<AggregateOperation::MAX>> {
308
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
309
36
            -> AggregateFunctionPtr {
310
36
        return create_aggregate_function_single_value<AggregateFunctionMaxData>(
311
36
                NameArrayMax::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
312
36
                true, attr);
313
36
    }
314
};
315
316
struct NameArraySum {
317
    static constexpr auto name = "array_sum";
318
};
319
320
struct NameArrayAverage {
321
    static constexpr auto name = "array_avg";
322
};
323
struct NameArrayProduct {
324
    static constexpr auto name = "array_product";
325
};
326
327
using FunctionArrayMin =
328
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MIN>, NameArrayMin>;
329
using FunctionArrayMax =
330
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MAX>, NameArrayMax>;
331
using FunctionArraySum =
332
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::SUM>, NameArraySum>;
333
using FunctionArrayAverage =
334
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::AVERAGE>, NameArrayAverage>;
335
using FunctionArrayProduct =
336
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::PRODUCT>, NameArrayProduct>;
337
338
using FunctionArrayJoin = FunctionArrayMapped<ArrayJoinImpl, NameArrayJoin>;
339
340
template <AggregateOperation operation>
341
struct AggregateFunctionTraitsWithResultType;
342
343
template <>
344
struct AggregateFunctionTraitsWithResultType<AggregateOperation::SUM> {
345
    template <PrimitiveType InputType, PrimitiveType ResultType>
346
    struct TypeTraits {
347
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
348
        using Function = AggregateFunctionSum<InputType, ResultType, AggregateDataType>;
349
    };
350
};
351
template <>
352
struct AggregateFunctionTraitsWithResultType<AggregateOperation::AVERAGE> {
353
    template <PrimitiveType InputType, PrimitiveType ResultType>
354
    struct TypeTraits {
355
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
356
        using Function = AggregateFunctionAvg<InputType, ResultType, AggregateDataType>;
357
    };
358
};
359
template <>
360
struct AggregateFunctionTraitsWithResultType<AggregateOperation::PRODUCT> {
361
    template <PrimitiveType InputType, PrimitiveType ResultType>
362
    struct TypeTraits {
363
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
364
        using Function = AggregateFunctionProduct<InputType, ResultType, AggregateDataType>;
365
    };
366
};
367
template <typename Derived>
368
struct ArrayAggregateFunctionCreatorWithResultType {
369
    template <PrimitiveType InputType, PrimitiveType ResultType>
370
    using Function = typename Derived::template TypeTraits<InputType, ResultType>::Function;
371
372
    static auto create(const DataTypePtr& data_type_ptr, const DataTypePtr& result_type_ptr,
373
0
                       const AggregateFunctionAttr& attr) -> AggregateFunctionPtr {
374
0
        return creator_with_type_list<
375
0
                TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
376
0
                TYPE_DECIMAL256>::creator_with_result_type<Function>("",
377
0
                                                                     DataTypes {make_nullable(
378
0
                                                                             data_type_ptr)},
379
0
                                                                     result_type_ptr, true, attr);
380
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
381
};
382
template <AggregateOperation operation, PrimitiveType ResultType>
383
struct ArrayAggregateImplDecimalV3;
384
template <AggregateOperation operation, PrimitiveType ResultType>
385
    requires(operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
386
             operation == AggregateOperation::AVERAGE)
387
struct ArrayAggregateImplDecimalV3<operation, ResultType> {
388
    using column_type = ColumnArray;
389
    using data_type = DataTypeArray;
390
391
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
392
393
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
394
395
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
396
397
0
    static DataTypePtr get_return_type(const DataTypes& arguments) {
398
0
        throw doris::Exception(
399
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
400
0
                "get_return_type is not implemented for ArrayAggregateImplDecimalV3");
401
0
        __builtin_unreachable();
402
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
403
404
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
405
                          const DataTypePtr& result_type, const DataTypeArray* data_type_array,
406
0
                          const ColumnArray& array) {
407
0
        ColumnPtr res;
408
0
        DataTypePtr type = data_type_array->get_nested_type();
409
0
        const IColumn* data = array.get_data_ptr().get();
410
411
0
        const auto& offsets = array.get_offsets();
412
413
0
        if (execute_type<TYPE_DECIMAL32>(res, result_type, type, data, offsets) ||
414
0
            execute_type<TYPE_DECIMAL64>(res, result_type, type, data, offsets) ||
415
0
            execute_type<TYPE_DECIMAL128I>(res, result_type, type, data, offsets) ||
416
0
            execute_type<TYPE_DECIMAL256>(res, result_type, type, data, offsets)) {
417
0
            block.replace_by_position(result, std::move(res));
418
0
            return Status::OK();
419
0
        } else {
420
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
421
0
        }
422
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
423
424
    template <typename ColumnType, typename CreateColumnFunc>
425
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& result_type,
426
                                  const DataTypePtr& type, const IColumn* data,
427
                                  const ColumnArray::Offsets64& offsets,
428
0
                                  CreateColumnFunc create_column_func) {
429
0
        using Function = ArrayAggregateFunctionCreatorWithResultType<
430
0
                AggregateFunctionTraitsWithResultType<operation>>;
431
432
0
        const ColumnType* column =
433
0
                data->is_nullable()
434
0
                        ? check_and_get_column<ColumnType>(
435
0
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
436
0
                        : check_and_get_column<ColumnType>(&*data);
437
0
        if (!column) {
438
0
            return false;
439
0
        }
440
441
0
        ColumnPtr res_column = create_column_func(column);
442
0
        res_column = make_nullable(res_column);
443
0
        assert_cast<ColumnNullable&>(res_column->assume_mutable_ref()).reserve(offsets.size());
444
445
0
        auto function = Function::create(type, result_type,
446
0
                                         {.is_window_function = false, .column_names = {}});
447
0
        auto guard = AggregateFunctionGuard(function.get());
448
0
        Arena arena;
449
0
        auto nullable_column = make_nullable(data->get_ptr());
450
0
        const IColumn* columns[] = {nullable_column.get()};
451
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
452
0
            auto start = offsets[i - 1]; // -1 is ok.
453
0
            auto end = offsets[i];
454
0
            bool is_empty = (start == end);
455
0
            if (is_empty) {
456
0
                res_column->assume_mutable()->insert_default();
457
0
                continue;
458
0
            }
459
0
            function->reset(guard.data());
460
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
461
0
                                      data->is_nullable());
462
0
            function->insert_result_into(guard.data(), res_column->assume_mutable_ref());
463
0
        }
464
0
        res_ptr = std::move(res_column);
465
0
        return true;
466
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_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_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
467
468
    template <PrimitiveType Element>
469
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& result_type,
470
                             const DataTypePtr& type, const IColumn* data,
471
0
                             const ColumnArray::Offsets64& offsets) {
472
0
        using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
473
0
        using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
474
475
0
        auto create_column = [](const ColVecType* column) -> ColumnPtr {
476
0
            return ColVecResultType::create(0, column->get_scale());
477
0
        };
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
478
479
0
        return execute_type_impl<ColVecType, decltype(create_column)>(res_ptr, result_type, type,
480
0
                                                                      data, offsets, create_column);
481
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb0EEELm16ELm15EEE
482
};
483
484
template <typename Impl, typename Name>
485
class FunctionArrayAggDecimalV3 : public IFunction {
486
public:
487
    static constexpr auto name = Name::name;
488
    explicit FunctionArrayAggDecimalV3(DataTypePtr result_type)
489
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
490
491
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
492
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
493
0
                        uint32_t result, size_t input_rows_count) const override {
494
0
        const auto& typed_column = block.get_by_position(arguments[0]);
495
0
        auto ptr = typed_column.column->convert_to_full_column_if_const();
496
0
        const typename Impl::column_type* column_array;
497
0
        if (ptr->is_nullable()) {
498
0
            column_array = check_and_get_column<const typename Impl::column_type>(
499
0
                    assert_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
500
0
        } else {
501
0
            column_array = check_and_get_column<const typename Impl::column_type>(ptr.get());
502
0
        }
503
0
        const auto* data_type_array =
504
0
                assert_cast<const DataTypeArray*>(remove_nullable(typed_column.type).get());
505
0
        return Impl::execute(block, arguments, result, _result_type, data_type_array,
506
0
                             *column_array);
507
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
508
509
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
510
511
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
512
513
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
514
515
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
516
0
        return Impl::get_return_type(arguments);
517
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
518
519
private:
520
    DataTypePtr _result_type;
521
};
522
template <PrimitiveType ResultType>
523
struct ArraySumDecimalV3Attributes {
524
    static_assert(is_decimalv3(ResultType));
525
    using AggregateDataType = AggregateFunctionSumData<ResultType>;
526
    using Function = FunctionArrayAggDecimalV3<
527
            ArrayAggregateImplDecimalV3<AggregateOperation::SUM, ResultType>, NameArraySum>;
528
};
529
template <PrimitiveType ResultType>
530
using ArraySumDecimalV3 = typename ArraySumDecimalV3Attributes<ResultType>::Function;
531
532
template <PrimitiveType ResultType>
533
struct ArrayAvgDecimalV3Attributes {
534
    static_assert(is_decimalv3(ResultType));
535
    using AggregateDataType = AggregateFunctionAvgData<ResultType>;
536
    using Function = FunctionArrayAggDecimalV3<
537
            ArrayAggregateImplDecimalV3<AggregateOperation::AVERAGE, ResultType>, NameArrayAverage>;
538
};
539
template <PrimitiveType ResultType>
540
using ArrayAvgDecimalV3 = typename ArrayAvgDecimalV3Attributes<ResultType>::Function;
541
542
template <PrimitiveType ResultType>
543
struct ArrayProductDecimalV3Attributes {
544
    static_assert(is_decimalv3(ResultType));
545
    using AggregateDataType = AggregateFunctionProductData<ResultType>;
546
    using Function = FunctionArrayAggDecimalV3<
547
            ArrayAggregateImplDecimalV3<AggregateOperation::PRODUCT, ResultType>, NameArrayProduct>;
548
};
549
template <PrimitiveType ResultType>
550
using ArrayProductDecimalV3 = typename ArrayProductDecimalV3Attributes<ResultType>::Function;
551
1
void register_array_reduce_agg_functions(SimpleFunctionFactory& factory) {
552
1
    {
553
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
554
14
            if (is_decimalv3(result_type->get_primitive_type())) {
555
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
556
0
                        ArraySumDecimalV3>(result_type);
557
14
            } else {
558
14
                FunctionBuilderPtr func =
559
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArraySum::create());
560
14
                return func;
561
14
            }
562
14
        };
563
1
        factory.register_array_agg_function(NameArraySum::name, creator);
564
1
    }
565
1
    {
566
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
567
14
            if (is_decimalv3(result_type->get_primitive_type())) {
568
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
569
0
                        ArrayAvgDecimalV3>(result_type);
570
14
            } else {
571
14
                FunctionBuilderPtr func =
572
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayAverage::create());
573
14
                return func;
574
14
            }
575
14
        };
576
1
        factory.register_array_agg_function(NameArrayAverage::name, creator);
577
1
    }
578
1
    {
579
10
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
580
10
            if (is_decimalv3(result_type->get_primitive_type())) {
581
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
582
0
                        ArrayProductDecimalV3>(result_type);
583
10
            } else {
584
10
                FunctionBuilderPtr func =
585
10
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayProduct::create());
586
10
                return func;
587
10
            }
588
10
        };
589
1
        factory.register_array_agg_function(NameArrayProduct::name, creator);
590
1
    }
591
1
}
592
593
1
void register_function_array_aggregation(SimpleFunctionFactory& factory) {
594
1
    factory.register_function<FunctionArrayMin>();
595
1
    factory.register_function<FunctionArrayMax>();
596
1
    factory.register_function<FunctionArrayJoin>();
597
1
    register_array_reduce_agg_functions(factory);
598
1
}
599
600
} // namespace doris