Coverage Report

Created: 2026-09-09 01:13

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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
74
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
74
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
66
            block.replace_by_position(result, std::move(res));
196
66
            return Status::OK();
197
66
        } else {
198
8
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
8
        }
200
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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
14
            block.replace_by_position(result, std::move(res));
196
14
            return Status::OK();
197
14
        } else {
198
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
0
        }
200
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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
14
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
14
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
14
            block.replace_by_position(result, std::move(res));
196
14
            return Status::OK();
197
14
        } else {
198
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
0
        }
200
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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
10
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
10
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
10
            block.replace_by_position(result, std::move(res));
196
10
            return Status::OK();
197
10
        } else {
198
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
0
        }
200
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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
14
            block.replace_by_position(result, std::move(res));
196
14
            return Status::OK();
197
14
        } else {
198
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
4
        }
200
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_TIMESTAMP_NS>(res, type, data, offsets) ||
193
18
            execute_type<TYPE_TIMESTAMPTZ>(res, type, data, offsets) ||
194
18
            execute_type<TYPE_VARCHAR>(res, type, data, offsets)) {
195
14
            block.replace_by_position(result, std::move(res));
196
14
            return Status::OK();
197
14
        } else {
198
4
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
199
4
        }
200
18
    }
201
202
    template <typename ColumnType, typename CreateColumnFunc>
203
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
204
                                  const ColumnArray::Offsets64& offsets,
205
408
                                  CreateColumnFunc create_column_func) {
206
408
        using Function =
207
408
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
408
        const ColumnType* column =
210
408
                is_column_nullable(*data)
211
408
                        ? check_and_get_column<ColumnType>(
212
408
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
408
                        : check_and_get_column<ColumnType>(&*data);
214
408
        if (!column) {
215
334
            return false;
216
334
        }
217
218
74
        ColumnPtr res_column = create_column_func(column);
219
74
        res_column = make_nullable(res_column);
220
74
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
74
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
74
        auto guard = AggregateFunctionGuard(function.get());
224
74
        Arena arena;
225
74
        auto nullable_column = make_nullable(data->get_ptr());
226
74
        const IColumn* columns[] = {nullable_column.get()};
227
74
        function->check_input_columns_type(columns);
228
74
        function->check_result_column_type(*res_column);
229
259
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
185
            auto start = offsets[i - 1]; // -1 is ok.
231
185
            auto end = offsets[i];
232
185
            bool is_empty = (start == end);
233
185
            if (is_empty) {
234
74
                res_column->assert_mutable()->insert_default();
235
74
                continue;
236
74
            }
237
111
            function->reset(guard.data());
238
111
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
111
                                      is_column_nullable(*data));
240
111
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
111
        }
242
74
        res_ptr = std::move(res_column);
243
74
        return true;
244
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
14
            return false;
216
14
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
12
            return false;
216
12
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
12
                                  CreateColumnFunc create_column_func) {
206
12
        using Function =
207
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
12
        const ColumnType* column =
210
12
                is_column_nullable(*data)
211
12
                        ? check_and_get_column<ColumnType>(
212
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
12
                        : check_and_get_column<ColumnType>(&*data);
214
12
        if (!column) {
215
10
            return false;
216
10
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
8
            return false;
216
8
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
8
                                  CreateColumnFunc create_column_func) {
206
8
        using Function =
207
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
8
        const ColumnType* column =
210
8
                is_column_nullable(*data)
211
8
                        ? check_and_get_column<ColumnType>(
212
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
8
                        : check_and_get_column<ColumnType>(&*data);
214
8
        if (!column) {
215
6
            return false;
216
6
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
6
                                  CreateColumnFunc create_column_func) {
206
6
        using Function =
207
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
6
        const ColumnType* column =
210
6
                is_column_nullable(*data)
211
6
                        ? check_and_get_column<ColumnType>(
212
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
6
                        : check_and_get_column<ColumnType>(&*data);
214
6
        if (!column) {
215
4
            return false;
216
4
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
4
                                  CreateColumnFunc create_column_func) {
206
4
        using Function =
207
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
4
        const ColumnType* column =
210
4
                is_column_nullable(*data)
211
4
                        ? check_and_get_column<ColumnType>(
212
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
4
                        : check_and_get_column<ColumnType>(&*data);
214
4
        if (!column) {
215
2
            return false;
216
2
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
2
                                  CreateColumnFunc create_column_func) {
206
2
        using Function =
207
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
2
        const ColumnType* column =
210
2
                is_column_nullable(*data)
211
2
                        ? check_and_get_column<ColumnType>(
212
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
2
                        : check_and_get_column<ColumnType>(&*data);
214
2
        if (!column) {
215
0
            return false;
216
0
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
14
            return false;
216
14
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
12
            return false;
216
12
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
12
                                  CreateColumnFunc create_column_func) {
206
12
        using Function =
207
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
12
        const ColumnType* column =
210
12
                is_column_nullable(*data)
211
12
                        ? check_and_get_column<ColumnType>(
212
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
12
                        : check_and_get_column<ColumnType>(&*data);
214
12
        if (!column) {
215
10
            return false;
216
10
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
8
            return false;
216
8
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
8
                                  CreateColumnFunc create_column_func) {
206
8
        using Function =
207
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
8
        const ColumnType* column =
210
8
                is_column_nullable(*data)
211
8
                        ? check_and_get_column<ColumnType>(
212
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
8
                        : check_and_get_column<ColumnType>(&*data);
214
8
        if (!column) {
215
6
            return false;
216
6
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
6
                                  CreateColumnFunc create_column_func) {
206
6
        using Function =
207
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
6
        const ColumnType* column =
210
6
                is_column_nullable(*data)
211
6
                        ? check_and_get_column<ColumnType>(
212
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
6
                        : check_and_get_column<ColumnType>(&*data);
214
6
        if (!column) {
215
4
            return false;
216
4
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
4
                                  CreateColumnFunc create_column_func) {
206
4
        using Function =
207
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
4
        const ColumnType* column =
210
4
                is_column_nullable(*data)
211
4
                        ? check_and_get_column<ColumnType>(
212
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
4
                        : check_and_get_column<ColumnType>(&*data);
214
4
        if (!column) {
215
2
            return false;
216
2
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
2
                                  CreateColumnFunc create_column_func) {
206
2
        using Function =
207
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
2
        const ColumnType* column =
210
2
                is_column_nullable(*data)
211
2
                        ? check_and_get_column<ColumnType>(
212
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
2
                        : check_and_get_column<ColumnType>(&*data);
214
2
        if (!column) {
215
0
            return false;
216
0
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
10
            return false;
216
10
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
10
            return false;
216
10
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
10
            return false;
216
10
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
8
            return false;
216
8
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
8
                                  CreateColumnFunc create_column_func) {
206
8
        using Function =
207
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
8
        const ColumnType* column =
210
8
                is_column_nullable(*data)
211
8
                        ? check_and_get_column<ColumnType>(
212
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
8
                        : check_and_get_column<ColumnType>(&*data);
214
8
        if (!column) {
215
6
            return false;
216
6
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
6
                                  CreateColumnFunc create_column_func) {
206
6
        using Function =
207
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
6
        const ColumnType* column =
210
6
                is_column_nullable(*data)
211
6
                        ? check_and_get_column<ColumnType>(
212
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
6
                        : check_and_get_column<ColumnType>(&*data);
214
6
        if (!column) {
215
4
            return false;
216
4
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
4
                                  CreateColumnFunc create_column_func) {
206
4
        using Function =
207
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
4
        const ColumnType* column =
210
4
                is_column_nullable(*data)
211
4
                        ? check_and_get_column<ColumnType>(
212
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
4
                        : check_and_get_column<ColumnType>(&*data);
214
4
        if (!column) {
215
2
            return false;
216
2
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
2
                                  CreateColumnFunc create_column_func) {
206
2
        using Function =
207
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
2
        const ColumnType* column =
210
2
                is_column_nullable(*data)
211
2
                        ? check_and_get_column<ColumnType>(
212
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
2
                        : check_and_get_column<ColumnType>(&*data);
214
2
        if (!column) {
215
0
            return false;
216
0
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
2
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
18
                                  CreateColumnFunc create_column_func) {
206
18
        using Function =
207
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
18
        const ColumnType* column =
210
18
                is_column_nullable(*data)
211
18
                        ? check_and_get_column<ColumnType>(
212
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
18
                        : check_and_get_column<ColumnType>(&*data);
214
18
        if (!column) {
215
16
            return false;
216
16
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
16
                                  CreateColumnFunc create_column_func) {
206
16
        using Function =
207
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
16
        const ColumnType* column =
210
16
                is_column_nullable(*data)
211
16
                        ? check_and_get_column<ColumnType>(
212
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
16
                        : check_and_get_column<ColumnType>(&*data);
214
16
        if (!column) {
215
14
            return false;
216
14
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
14
            return false;
216
14
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
12
            return false;
216
12
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
12
                                  CreateColumnFunc create_column_func) {
206
12
        using Function =
207
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
12
        const ColumnType* column =
210
12
                is_column_nullable(*data)
211
12
                        ? check_and_get_column<ColumnType>(
212
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
12
                        : check_and_get_column<ColumnType>(&*data);
214
12
        if (!column) {
215
10
            return false;
216
10
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
8
            return false;
216
8
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
8
                                  CreateColumnFunc create_column_func) {
206
8
        using Function =
207
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
8
        const ColumnType* column =
210
8
                is_column_nullable(*data)
211
8
                        ? check_and_get_column<ColumnType>(
212
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
8
                        : check_and_get_column<ColumnType>(&*data);
214
8
        if (!column) {
215
6
            return false;
216
6
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
6
                                  CreateColumnFunc create_column_func) {
206
6
        using Function =
207
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
6
        const ColumnType* column =
210
6
                is_column_nullable(*data)
211
6
                        ? check_and_get_column<ColumnType>(
212
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
6
                        : check_and_get_column<ColumnType>(&*data);
214
6
        if (!column) {
215
4
            return false;
216
4
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
4
                                  CreateColumnFunc create_column_func) {
206
4
        using Function =
207
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
4
        const ColumnType* column =
210
4
                is_column_nullable(*data)
211
4
                        ? check_and_get_column<ColumnType>(
212
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
4
                        : check_and_get_column<ColumnType>(&*data);
214
4
        if (!column) {
215
2
            return false;
216
2
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
2
                                  CreateColumnFunc create_column_func) {
206
2
        using Function =
207
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
2
        const ColumnType* column =
210
2
                is_column_nullable(*data)
211
2
                        ? check_and_get_column<ColumnType>(
212
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
2
                        : check_and_get_column<ColumnType>(&*data);
214
2
        if (!column) {
215
0
            return false;
216
0
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEZNS2_12execute_typeILS5_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEZNS2_12execute_typeILS5_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEZNS2_12execute_typeILS5_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEZNS2_12execute_typeILS5_25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEZNS2_12execute_typeILS5_26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEZNS2_12execute_typeILS5_43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEZNS2_12execute_typeILS5_42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE36EEEZNS2_12execute_typeILS5_36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
18
                                  CreateColumnFunc create_column_func) {
206
18
        using Function =
207
18
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
18
        const ColumnType* column =
210
18
                is_column_nullable(*data)
211
18
                        ? check_and_get_column<ColumnType>(
212
18
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
18
                        : check_and_get_column<ColumnType>(&*data);
214
18
        if (!column) {
215
16
            return false;
216
16
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE37EEEZNS2_12execute_typeILS5_37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
16
                                  CreateColumnFunc create_column_func) {
206
16
        using Function =
207
16
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
16
        const ColumnType* column =
210
16
                is_column_nullable(*data)
211
16
                        ? check_and_get_column<ColumnType>(
212
16
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
16
                        : check_and_get_column<ColumnType>(&*data);
214
16
        if (!column) {
215
14
            return false;
216
14
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE2EEEZNS2_12execute_typeILS5_2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
14
            return false;
216
14
        }
217
218
0
        ColumnPtr res_column = create_column_func(column);
219
0
        res_column = make_nullable(res_column);
220
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
0
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
0
        auto guard = AggregateFunctionGuard(function.get());
224
0
        Arena arena;
225
0
        auto nullable_column = make_nullable(data->get_ptr());
226
0
        const IColumn* columns[] = {nullable_column.get()};
227
0
        function->check_input_columns_type(columns);
228
0
        function->check_result_column_type(*res_column);
229
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
0
            auto start = offsets[i - 1]; // -1 is ok.
231
0
            auto end = offsets[i];
232
0
            bool is_empty = (start == end);
233
0
            if (is_empty) {
234
0
                res_column->assert_mutable()->insert_default();
235
0
                continue;
236
0
            }
237
0
            function->reset(guard.data());
238
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
0
                                      is_column_nullable(*data));
240
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
0
        }
242
0
        res_ptr = std::move(res_column);
243
0
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE3EEEZNS2_12execute_typeILS5_3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
14
                                  CreateColumnFunc create_column_func) {
206
14
        using Function =
207
14
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
14
        const ColumnType* column =
210
14
                is_column_nullable(*data)
211
14
                        ? check_and_get_column<ColumnType>(
212
14
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
14
                        : check_and_get_column<ColumnType>(&*data);
214
14
        if (!column) {
215
12
            return false;
216
12
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE4EEEZNS2_12execute_typeILS5_4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
12
                                  CreateColumnFunc create_column_func) {
206
12
        using Function =
207
12
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
12
        const ColumnType* column =
210
12
                is_column_nullable(*data)
211
12
                        ? check_and_get_column<ColumnType>(
212
12
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
12
                        : check_and_get_column<ColumnType>(&*data);
214
12
        if (!column) {
215
10
            return false;
216
10
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE5EEEZNS2_12execute_typeILS5_5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
10
                                  CreateColumnFunc create_column_func) {
206
10
        using Function =
207
10
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
10
        const ColumnType* column =
210
10
                is_column_nullable(*data)
211
10
                        ? check_and_get_column<ColumnType>(
212
10
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
10
                        : check_and_get_column<ColumnType>(&*data);
214
10
        if (!column) {
215
8
            return false;
216
8
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE6EEEZNS2_12execute_typeILS5_6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
8
                                  CreateColumnFunc create_column_func) {
206
8
        using Function =
207
8
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
8
        const ColumnType* column =
210
8
                is_column_nullable(*data)
211
8
                        ? check_and_get_column<ColumnType>(
212
8
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
8
                        : check_and_get_column<ColumnType>(&*data);
214
8
        if (!column) {
215
6
            return false;
216
6
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE7EEEZNS2_12execute_typeILS5_7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
6
                                  CreateColumnFunc create_column_func) {
206
6
        using Function =
207
6
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
6
        const ColumnType* column =
210
6
                is_column_nullable(*data)
211
6
                        ? check_and_get_column<ColumnType>(
212
6
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
6
                        : check_and_get_column<ColumnType>(&*data);
214
6
        if (!column) {
215
4
            return false;
216
4
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE8EEEZNS2_12execute_typeILS5_8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
4
                                  CreateColumnFunc create_column_func) {
206
4
        using Function =
207
4
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
4
        const ColumnType* column =
210
4
                is_column_nullable(*data)
211
4
                        ? check_and_get_column<ColumnType>(
212
4
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
4
                        : check_and_get_column<ColumnType>(&*data);
214
4
        if (!column) {
215
2
            return false;
216
2
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE9EEEZNS2_12execute_typeILS5_9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Line
Count
Source
205
2
                                  CreateColumnFunc create_column_func) {
206
2
        using Function =
207
2
                ArrayAggregateFunctionCreator<operation, AggregateFunctionTraits<operation>>;
208
209
2
        const ColumnType* column =
210
2
                is_column_nullable(*data)
211
2
                        ? check_and_get_column<ColumnType>(
212
2
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
213
2
                        : check_and_get_column<ColumnType>(&*data);
214
2
        if (!column) {
215
0
            return false;
216
0
        }
217
218
2
        ColumnPtr res_column = create_column_func(column);
219
2
        res_column = make_nullable(res_column);
220
2
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
221
222
2
        auto function = Function::create(type, {.is_window_function = false, .column_names = {}});
223
2
        auto guard = AggregateFunctionGuard(function.get());
224
2
        Arena arena;
225
2
        auto nullable_column = make_nullable(data->get_ptr());
226
2
        const IColumn* columns[] = {nullable_column.get()};
227
2
        function->check_input_columns_type(columns);
228
2
        function->check_result_column_type(*res_column);
229
7
        for (int64_t i = 0; i < offsets.size(); ++i) {
230
5
            auto start = offsets[i - 1]; // -1 is ok.
231
5
            auto end = offsets[i];
232
5
            bool is_empty = (start == end);
233
5
            if (is_empty) {
234
2
                res_column->assert_mutable()->insert_default();
235
2
                continue;
236
2
            }
237
3
            function->reset(guard.data());
238
3
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
239
3
                                      is_column_nullable(*data));
240
3
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
241
3
        }
242
2
        res_ptr = std::move(res_column);
243
2
        return true;
244
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE28EEEZNS2_12execute_typeILS5_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE29EEEZNS2_12execute_typeILS5_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE30EEEZNS2_12execute_typeILS5_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_13ColumnDecimalILNS_13PrimitiveTypeE35EEEZNS2_12execute_typeILS5_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE25EEEZNS2_12execute_typeILS5_25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE26EEEZNS2_12execute_typeILS5_26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE43EEEZNS2_12execute_typeILS5_43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_12ColumnVectorILNS_13PrimitiveTypeE42EEEZNS2_12execute_typeILS5_42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE17execute_type_implINS_9ColumnStrIjEEZNS2_12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS5_E_EEbSD_SJ_SL_SS_T0_
245
246
    template <PrimitiveType Element>
247
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& type, const IColumn* data,
248
408
                             const ColumnArray::Offsets64& offsets) {
249
408
        if constexpr (is_string_type(Element)) {
250
0
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
0
                operation == AggregateOperation::AVERAGE) {
252
0
                return false;
253
0
            }
254
255
0
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
0
                return ColumnString::create();
257
0
            };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_9ColumnStrIjEEE_clEST_
258
259
0
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
0
                                                                            offsets, create_column);
261
408
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
0
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
0
                return false;
268
408
            } else {
269
408
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
408
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
408
                        operation>::template TypeTraits<Element>::ResultType;
272
408
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
408
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
74
                    if constexpr (is_decimal(Element)) {
276
0
                        return ColVecResultType::create(0, column->get_scale());
277
74
                    } else {
278
74
                        return ColVecResultType::create();
279
74
                    }
280
74
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_43EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_36EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_37EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_2EEEE_clEST_
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_3EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_4EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_5EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_6EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_7EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_8EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
_ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_9EEEE_clEST_
Line
Count
Source
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
                    if constexpr (is_decimal(Element)) {
276
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS4_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_25EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_26EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_43EEEE_clEST_
Unexecuted instantiation: _ZZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_12ColumnVectorILS4_42EEEE_clEST_
281
282
408
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
408
                        res_ptr, type, data, offsets, create_column);
284
408
            }
285
408
        }
286
408
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
12
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
12
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
12
            } else {
269
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
12
                        operation>::template TypeTraits<Element>::ResultType;
272
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
12
                    if constexpr (is_decimal(Element)) {
276
12
                        return ColVecResultType::create(0, column->get_scale());
277
12
                    } else {
278
12
                        return ColVecResultType::create();
279
12
                    }
280
12
                };
281
282
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
12
                        res_ptr, type, data, offsets, create_column);
284
12
            }
285
12
        }
286
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
8
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
8
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
8
            } else {
269
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
8
                        operation>::template TypeTraits<Element>::ResultType;
272
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
8
                    if constexpr (is_decimal(Element)) {
276
8
                        return ColVecResultType::create(0, column->get_scale());
277
8
                    } else {
278
8
                        return ColVecResultType::create();
279
8
                    }
280
8
                };
281
282
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
8
                        res_ptr, type, data, offsets, create_column);
284
8
            }
285
8
        }
286
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
6
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
6
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
6
            } else {
269
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
6
                        operation>::template TypeTraits<Element>::ResultType;
272
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
6
                    if constexpr (is_decimal(Element)) {
276
6
                        return ColVecResultType::create(0, column->get_scale());
277
6
                    } else {
278
6
                        return ColVecResultType::create();
279
6
                    }
280
6
                };
281
282
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
6
                        res_ptr, type, data, offsets, create_column);
284
6
            }
285
6
        }
286
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
4
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
4
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
4
            } else {
269
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
4
                        operation>::template TypeTraits<Element>::ResultType;
272
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
4
                    if constexpr (is_decimal(Element)) {
276
4
                        return ColVecResultType::create(0, column->get_scale());
277
4
                    } else {
278
4
                        return ColVecResultType::create();
279
4
                    }
280
4
                };
281
282
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
4
                        res_ptr, type, data, offsets, create_column);
284
4
            }
285
4
        }
286
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
2
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
2
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
2
            } else {
269
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
2
                        operation>::template TypeTraits<Element>::ResultType;
272
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
2
                    if constexpr (is_decimal(Element)) {
276
2
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
281
282
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
2
                        res_ptr, type, data, offsets, create_column);
284
2
            }
285
2
        }
286
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE2EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
12
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
12
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
12
            } else {
269
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
12
                        operation>::template TypeTraits<Element>::ResultType;
272
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
12
                    if constexpr (is_decimal(Element)) {
276
12
                        return ColVecResultType::create(0, column->get_scale());
277
12
                    } else {
278
12
                        return ColVecResultType::create();
279
12
                    }
280
12
                };
281
282
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
12
                        res_ptr, type, data, offsets, create_column);
284
12
            }
285
12
        }
286
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
8
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
8
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
8
            } else {
269
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
8
                        operation>::template TypeTraits<Element>::ResultType;
272
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
8
                    if constexpr (is_decimal(Element)) {
276
8
                        return ColVecResultType::create(0, column->get_scale());
277
8
                    } else {
278
8
                        return ColVecResultType::create();
279
8
                    }
280
8
                };
281
282
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
8
                        res_ptr, type, data, offsets, create_column);
284
8
            }
285
8
        }
286
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
6
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
6
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
6
            } else {
269
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
6
                        operation>::template TypeTraits<Element>::ResultType;
272
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
6
                    if constexpr (is_decimal(Element)) {
276
6
                        return ColVecResultType::create(0, column->get_scale());
277
6
                    } else {
278
6
                        return ColVecResultType::create();
279
6
                    }
280
6
                };
281
282
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
6
                        res_ptr, type, data, offsets, create_column);
284
6
            }
285
6
        }
286
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
4
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
4
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
4
            } else {
269
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
4
                        operation>::template TypeTraits<Element>::ResultType;
272
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
4
                    if constexpr (is_decimal(Element)) {
276
4
                        return ColVecResultType::create(0, column->get_scale());
277
4
                    } else {
278
4
                        return ColVecResultType::create();
279
4
                    }
280
4
                };
281
282
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
4
                        res_ptr, type, data, offsets, create_column);
284
4
            }
285
4
        }
286
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
2
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
2
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
2
            } else {
269
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
2
                        operation>::template TypeTraits<Element>::ResultType;
272
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
2
                    if constexpr (is_decimal(Element)) {
276
2
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
281
282
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
2
                        res_ptr, type, data, offsets, create_column);
284
2
            }
285
2
        }
286
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE3EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
8
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
8
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
8
            } else {
269
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
8
                        operation>::template TypeTraits<Element>::ResultType;
272
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
8
                    if constexpr (is_decimal(Element)) {
276
8
                        return ColVecResultType::create(0, column->get_scale());
277
8
                    } else {
278
8
                        return ColVecResultType::create();
279
8
                    }
280
8
                };
281
282
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
8
                        res_ptr, type, data, offsets, create_column);
284
8
            }
285
8
        }
286
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
6
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
6
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
6
            } else {
269
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
6
                        operation>::template TypeTraits<Element>::ResultType;
272
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
6
                    if constexpr (is_decimal(Element)) {
276
6
                        return ColVecResultType::create(0, column->get_scale());
277
6
                    } else {
278
6
                        return ColVecResultType::create();
279
6
                    }
280
6
                };
281
282
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
6
                        res_ptr, type, data, offsets, create_column);
284
6
            }
285
6
        }
286
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
4
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
4
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
4
            } else {
269
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
4
                        operation>::template TypeTraits<Element>::ResultType;
272
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
4
                    if constexpr (is_decimal(Element)) {
276
4
                        return ColVecResultType::create(0, column->get_scale());
277
4
                    } else {
278
4
                        return ColVecResultType::create();
279
4
                    }
280
4
                };
281
282
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
4
                        res_ptr, type, data, offsets, create_column);
284
4
            }
285
4
        }
286
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
2
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
2
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
2
            } else {
269
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
2
                        operation>::template TypeTraits<Element>::ResultType;
272
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
2
                    if constexpr (is_decimal(Element)) {
276
2
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
281
282
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
2
                        res_ptr, type, data, offsets, create_column);
284
2
            }
285
2
        }
286
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE4EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
18
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
18
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
18
            } else {
269
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
18
                        operation>::template TypeTraits<Element>::ResultType;
272
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
18
                    if constexpr (is_decimal(Element)) {
276
18
                        return ColVecResultType::create(0, column->get_scale());
277
18
                    } else {
278
18
                        return ColVecResultType::create();
279
18
                    }
280
18
                };
281
282
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
18
                        res_ptr, type, data, offsets, create_column);
284
18
            }
285
18
        }
286
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
16
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
16
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
16
            } else {
269
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
16
                        operation>::template TypeTraits<Element>::ResultType;
272
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
16
                    if constexpr (is_decimal(Element)) {
276
16
                        return ColVecResultType::create(0, column->get_scale());
277
16
                    } else {
278
16
                        return ColVecResultType::create();
279
16
                    }
280
16
                };
281
282
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
16
                        res_ptr, type, data, offsets, create_column);
284
16
            }
285
16
        }
286
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
12
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
12
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
12
            } else {
269
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
12
                        operation>::template TypeTraits<Element>::ResultType;
272
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
12
                    if constexpr (is_decimal(Element)) {
276
12
                        return ColVecResultType::create(0, column->get_scale());
277
12
                    } else {
278
12
                        return ColVecResultType::create();
279
12
                    }
280
12
                };
281
282
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
12
                        res_ptr, type, data, offsets, create_column);
284
12
            }
285
12
        }
286
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
8
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
8
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
8
            } else {
269
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
8
                        operation>::template TypeTraits<Element>::ResultType;
272
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
8
                    if constexpr (is_decimal(Element)) {
276
8
                        return ColVecResultType::create(0, column->get_scale());
277
8
                    } else {
278
8
                        return ColVecResultType::create();
279
8
                    }
280
8
                };
281
282
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
8
                        res_ptr, type, data, offsets, create_column);
284
8
            }
285
8
        }
286
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
6
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
6
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
6
            } else {
269
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
6
                        operation>::template TypeTraits<Element>::ResultType;
272
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
6
                    if constexpr (is_decimal(Element)) {
276
6
                        return ColVecResultType::create(0, column->get_scale());
277
6
                    } else {
278
6
                        return ColVecResultType::create();
279
6
                    }
280
6
                };
281
282
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
6
                        res_ptr, type, data, offsets, create_column);
284
6
            }
285
6
        }
286
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
4
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
4
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
4
            } else {
269
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
4
                        operation>::template TypeTraits<Element>::ResultType;
272
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
4
                    if constexpr (is_decimal(Element)) {
276
4
                        return ColVecResultType::create(0, column->get_scale());
277
4
                    } else {
278
4
                        return ColVecResultType::create();
279
4
                    }
280
4
                };
281
282
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
4
                        res_ptr, type, data, offsets, create_column);
284
4
            }
285
4
        }
286
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
2
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
2
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
2
            } else {
269
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
2
                        operation>::template TypeTraits<Element>::ResultType;
272
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
2
                    if constexpr (is_decimal(Element)) {
276
2
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
281
282
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
2
                        res_ptr, type, data, offsets, create_column);
284
2
            }
285
2
        }
286
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE0EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE36EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
18
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
18
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
18
            } else {
269
18
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
18
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
18
                        operation>::template TypeTraits<Element>::ResultType;
272
18
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
18
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
18
                    if constexpr (is_decimal(Element)) {
276
18
                        return ColVecResultType::create(0, column->get_scale());
277
18
                    } else {
278
18
                        return ColVecResultType::create();
279
18
                    }
280
18
                };
281
282
18
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
18
                        res_ptr, type, data, offsets, create_column);
284
18
            }
285
18
        }
286
18
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE37EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
16
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
16
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
16
            } else {
269
16
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
16
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
16
                        operation>::template TypeTraits<Element>::ResultType;
272
16
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
16
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
16
                    if constexpr (is_decimal(Element)) {
276
16
                        return ColVecResultType::create(0, column->get_scale());
277
16
                    } else {
278
16
                        return ColVecResultType::create();
279
16
                    }
280
16
                };
281
282
16
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
16
                        res_ptr, type, data, offsets, create_column);
284
16
            }
285
16
        }
286
16
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE2EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE3EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
14
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
14
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
14
            } else {
269
14
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
14
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
14
                        operation>::template TypeTraits<Element>::ResultType;
272
14
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
14
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
14
                    if constexpr (is_decimal(Element)) {
276
14
                        return ColVecResultType::create(0, column->get_scale());
277
14
                    } else {
278
14
                        return ColVecResultType::create();
279
14
                    }
280
14
                };
281
282
14
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
14
                        res_ptr, type, data, offsets, create_column);
284
14
            }
285
14
        }
286
14
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE4EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
12
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
12
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
12
            } else {
269
12
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
12
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
12
                        operation>::template TypeTraits<Element>::ResultType;
272
12
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
12
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
12
                    if constexpr (is_decimal(Element)) {
276
12
                        return ColVecResultType::create(0, column->get_scale());
277
12
                    } else {
278
12
                        return ColVecResultType::create();
279
12
                    }
280
12
                };
281
282
12
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
12
                        res_ptr, type, data, offsets, create_column);
284
12
            }
285
12
        }
286
12
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE5EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
10
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
10
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
10
            } else {
269
10
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
10
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
10
                        operation>::template TypeTraits<Element>::ResultType;
272
10
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
10
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
10
                    if constexpr (is_decimal(Element)) {
276
10
                        return ColVecResultType::create(0, column->get_scale());
277
10
                    } else {
278
10
                        return ColVecResultType::create();
279
10
                    }
280
10
                };
281
282
10
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
10
                        res_ptr, type, data, offsets, create_column);
284
10
            }
285
10
        }
286
10
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE6EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
8
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
8
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
8
            } else {
269
8
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
8
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
8
                        operation>::template TypeTraits<Element>::ResultType;
272
8
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
8
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
8
                    if constexpr (is_decimal(Element)) {
276
8
                        return ColVecResultType::create(0, column->get_scale());
277
8
                    } else {
278
8
                        return ColVecResultType::create();
279
8
                    }
280
8
                };
281
282
8
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
8
                        res_ptr, type, data, offsets, create_column);
284
8
            }
285
8
        }
286
8
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE7EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
6
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
6
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
6
            } else {
269
6
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
6
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
6
                        operation>::template TypeTraits<Element>::ResultType;
272
6
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
6
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
6
                    if constexpr (is_decimal(Element)) {
276
6
                        return ColVecResultType::create(0, column->get_scale());
277
6
                    } else {
278
6
                        return ColVecResultType::create();
279
6
                    }
280
6
                };
281
282
6
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
6
                        res_ptr, type, data, offsets, create_column);
284
6
            }
285
6
        }
286
6
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE8EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
4
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
4
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
4
            } else {
269
4
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
4
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
4
                        operation>::template TypeTraits<Element>::ResultType;
272
4
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
4
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
4
                    if constexpr (is_decimal(Element)) {
276
4
                        return ColVecResultType::create(0, column->get_scale());
277
4
                    } else {
278
4
                        return ColVecResultType::create();
279
4
                    }
280
4
                };
281
282
4
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
4
                        res_ptr, type, data, offsets, create_column);
284
4
            }
285
4
        }
286
4
    }
_ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE9EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Line
Count
Source
248
2
                             const ColumnArray::Offsets64& offsets) {
249
        if constexpr (is_string_type(Element)) {
250
            if (operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
251
                operation == AggregateOperation::AVERAGE) {
252
                return false;
253
            }
254
255
            auto create_column = [](const ColumnString*) -> ColumnPtr {
256
                return ColumnString::create();
257
            };
258
259
            return execute_type_impl<ColumnString, decltype(create_column)>(res_ptr, type, data,
260
                                                                            offsets, create_column);
261
2
        } else {
262
            if constexpr ((operation == AggregateOperation::SUM ||
263
                           operation == AggregateOperation::PRODUCT ||
264
                           operation == AggregateOperation::AVERAGE) &&
265
                          (is_date_type(Element) || is_timestamp_ns_type(Element) ||
266
                           is_timestamptz_type(Element) || is_decimalv3(Element))) {
267
                return false;
268
2
            } else {
269
2
                using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
270
2
                static constexpr PrimitiveType ResultType = AggregateFunctionTraits<
271
2
                        operation>::template TypeTraits<Element>::ResultType;
272
2
                using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
273
274
2
                auto create_column = [](const ColVecType* column) -> ColumnPtr {
275
2
                    if constexpr (is_decimal(Element)) {
276
2
                        return ColVecResultType::create(0, column->get_scale());
277
2
                    } else {
278
2
                        return ColVecResultType::create();
279
2
                    }
280
2
                };
281
282
2
                return execute_type_impl<ColVecType, decltype(create_column)>(
283
2
                        res_ptr, type, data, offsets, create_column);
284
2
            }
285
2
        }
286
2
    }
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE25EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE26EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE43EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE42EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris18ArrayAggregateImplILNS_18AggregateOperationE1EE12execute_typeILNS_13PrimitiveTypeE10EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEEPKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
287
};
288
289
struct NameArrayMin {
290
    static constexpr auto name = "array_min";
291
};
292
293
template <>
294
struct ArrayAggregateFunctionCreator<AggregateOperation::MIN,
295
                                     AggregateFunctionTraits<AggregateOperation::MIN>> {
296
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
297
36
            -> AggregateFunctionPtr {
298
36
        return create_aggregate_function_single_value<AggregateFunctionMinData>(
299
36
                NameArrayMin::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
300
36
                true, attr);
301
36
    }
302
};
303
304
struct NameArrayMax {
305
    static constexpr auto name = "array_max";
306
};
307
308
template <>
309
struct ArrayAggregateFunctionCreator<AggregateOperation::MAX,
310
                                     AggregateFunctionTraits<AggregateOperation::MAX>> {
311
    static auto create(const DataTypePtr& data_type_ptr, const AggregateFunctionAttr& attr)
312
36
            -> AggregateFunctionPtr {
313
36
        return create_aggregate_function_single_value<AggregateFunctionMaxData>(
314
36
                NameArrayMax::name, {make_nullable(data_type_ptr)}, make_nullable(data_type_ptr),
315
36
                true, attr);
316
36
    }
317
};
318
319
struct NameArraySum {
320
    static constexpr auto name = "array_sum";
321
};
322
323
struct NameArrayAverage {
324
    static constexpr auto name = "array_avg";
325
};
326
struct NameArrayProduct {
327
    static constexpr auto name = "array_product";
328
};
329
330
using FunctionArrayMin =
331
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MIN>, NameArrayMin>;
332
using FunctionArrayMax =
333
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::MAX>, NameArrayMax>;
334
using FunctionArraySum =
335
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::SUM>, NameArraySum>;
336
using FunctionArrayAverage =
337
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::AVERAGE>, NameArrayAverage>;
338
using FunctionArrayProduct =
339
        FunctionArrayMapped<ArrayAggregateImpl<AggregateOperation::PRODUCT>, NameArrayProduct>;
340
341
using FunctionArrayJoin = FunctionArrayMapped<ArrayJoinImpl, NameArrayJoin>;
342
343
template <AggregateOperation operation>
344
struct AggregateFunctionTraitsWithResultType;
345
346
template <>
347
struct AggregateFunctionTraitsWithResultType<AggregateOperation::SUM> {
348
    template <PrimitiveType InputType, PrimitiveType ResultType>
349
    struct TypeTraits {
350
        using AggregateDataType = AggregateFunctionSumData<ResultType>;
351
        using Function = AggregateFunctionSum<InputType, ResultType, AggregateDataType>;
352
    };
353
};
354
template <>
355
struct AggregateFunctionTraitsWithResultType<AggregateOperation::AVERAGE> {
356
    template <PrimitiveType InputType, PrimitiveType ResultType>
357
    struct TypeTraits {
358
        using AggregateDataType = AggregateFunctionAvgData<ResultType>;
359
        using Function = AggregateFunctionAvg<InputType, ResultType, AggregateDataType>;
360
    };
361
};
362
template <>
363
struct AggregateFunctionTraitsWithResultType<AggregateOperation::PRODUCT> {
364
    template <PrimitiveType InputType, PrimitiveType ResultType>
365
    struct TypeTraits {
366
        using AggregateDataType = AggregateFunctionProductData<ResultType>;
367
        using Function = AggregateFunctionProduct<InputType, ResultType, AggregateDataType>;
368
    };
369
};
370
template <typename Derived>
371
struct ArrayAggregateFunctionCreatorWithResultType {
372
    template <PrimitiveType InputType, PrimitiveType ResultType>
373
    using Function = typename Derived::template TypeTraits<InputType, ResultType>::Function;
374
375
    static auto create(const DataTypePtr& data_type_ptr, const DataTypePtr& result_type_ptr,
376
0
                       const AggregateFunctionAttr& attr) -> AggregateFunctionPtr {
377
0
        return creator_with_type_list<
378
0
                TYPE_DECIMAL32, TYPE_DECIMAL64, TYPE_DECIMAL128I,
379
0
                TYPE_DECIMAL256>::creator_with_result_type<Function>("",
380
0
                                                                     DataTypes {make_nullable(
381
0
                                                                             data_type_ptr)},
382
0
                                                                     result_type_ptr, true, attr);
383
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
384
};
385
template <AggregateOperation operation, PrimitiveType ResultType>
386
struct ArrayAggregateImplDecimalV3;
387
template <AggregateOperation operation, PrimitiveType ResultType>
388
    requires(operation == AggregateOperation::SUM || operation == AggregateOperation::PRODUCT ||
389
             operation == AggregateOperation::AVERAGE)
390
struct ArrayAggregateImplDecimalV3<operation, ResultType> {
391
    using column_type = ColumnArray;
392
    using data_type = DataTypeArray;
393
394
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
395
396
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
397
398
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
399
400
0
    static DataTypePtr get_return_type(const DataTypes& arguments) {
401
0
        throw doris::Exception(
402
0
                ErrorCode::NOT_IMPLEMENTED_ERROR,
403
0
                "get_return_type is not implemented for ArrayAggregateImplDecimalV3");
404
0
        __builtin_unreachable();
405
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
406
407
    static Status execute(Block& block, const ColumnNumbers& arguments, uint32_t result,
408
                          const DataTypePtr& result_type, const DataTypeArray* data_type_array,
409
0
                          const ColumnArray& array) {
410
0
        ColumnPtr res;
411
0
        DataTypePtr type = data_type_array->get_nested_type();
412
0
        const IColumn* data = array.get_data_ptr().get();
413
414
0
        const auto& offsets = array.get_offsets();
415
416
0
        if (execute_type<TYPE_DECIMAL32>(res, result_type, type, data, offsets) ||
417
0
            execute_type<TYPE_DECIMAL64>(res, result_type, type, data, offsets) ||
418
0
            execute_type<TYPE_DECIMAL128I>(res, result_type, type, data, offsets) ||
419
0
            execute_type<TYPE_DECIMAL256>(res, result_type, type, data, offsets)) {
420
0
            block.replace_by_position(result, std::move(res));
421
0
            return Status::OK();
422
0
        } else {
423
0
            return Status::RuntimeError("Unexpected column for aggregation: {}", data->get_name());
424
0
        }
425
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
426
427
    template <typename ColumnType, typename CreateColumnFunc>
428
    static bool execute_type_impl(ColumnPtr& res_ptr, const DataTypePtr& result_type,
429
                                  const DataTypePtr& type, const IColumn* data,
430
                                  const ColumnArray::Offsets64& offsets,
431
0
                                  CreateColumnFunc create_column_func) {
432
0
        using Function = ArrayAggregateFunctionCreatorWithResultType<
433
0
                AggregateFunctionTraitsWithResultType<operation>>;
434
435
0
        const ColumnType* column =
436
0
                is_column_nullable(*data)
437
0
                        ? check_and_get_column<ColumnType>(
438
0
                                  static_cast<const ColumnNullable*>(data)->get_nested_column())
439
0
                        : check_and_get_column<ColumnType>(&*data);
440
0
        if (!column) {
441
0
            return false;
442
0
        }
443
444
0
        ColumnPtr res_column = create_column_func(column);
445
0
        res_column = make_nullable(res_column);
446
0
        assert_cast<ColumnNullable&>(res_column->assert_mutable_ref()).reserve(offsets.size());
447
448
0
        auto function = Function::create(type, result_type,
449
0
                                         {.is_window_function = false, .column_names = {}});
450
0
        auto guard = AggregateFunctionGuard(function.get());
451
0
        Arena arena;
452
0
        auto nullable_column = make_nullable(data->get_ptr());
453
0
        const IColumn* columns[] = {nullable_column.get()};
454
0
        function->check_input_columns_type(columns);
455
0
        function->check_result_column_type(*res_column);
456
0
        for (int64_t i = 0; i < offsets.size(); ++i) {
457
0
            auto start = offsets[i - 1]; // -1 is ok.
458
0
            auto end = offsets[i];
459
0
            bool is_empty = (start == end);
460
0
            if (is_empty) {
461
0
                res_column->assert_mutable()->insert_default();
462
0
                continue;
463
0
            }
464
0
            function->reset(guard.data());
465
0
            function->add_batch_range(start, end - 1, guard.data(), columns, arena,
466
0
                                      is_column_nullable(*data));
467
0
            function->insert_result_into(guard.data(), res_column->assert_mutable_ref());
468
0
        }
469
0
        res_ptr = std::move(res_column);
470
0
        return true;
471
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_28EEEZNS3_12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_29EEEZNS3_12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_30EEEZNS3_12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE17execute_type_implINS_13ColumnDecimalILS2_35EEEZNS3_12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS9_EERKSt10shared_ptrIKNS_9IDataTypeEESJ_PKS9_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEEUlPKS6_E_EEbSD_SJ_SJ_SL_SS_T0_
472
473
    template <PrimitiveType Element>
474
    static bool execute_type(ColumnPtr& res_ptr, const DataTypePtr& result_type,
475
                             const DataTypePtr& type, const IColumn* data,
476
0
                             const ColumnArray::Offsets64& offsets) {
477
0
        using ColVecType = typename PrimitiveTypeTraits<Element>::ColumnType;
478
0
        using ColVecResultType = typename PrimitiveTypeTraits<ResultType>::ColumnType;
479
480
0
        auto create_column = [](const ColVecType* column) -> ColumnPtr {
481
0
            return ColVecResultType::create(0, column->get_scale());
482
0
        };
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_28EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_29EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_30EEEE_clEST_
Unexecuted instantiation: _ZZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEEENKUlPKNS_13ColumnDecimalILS2_35EEEE_clEST_
483
484
0
        return execute_type_impl<ColVecType, decltype(create_column)>(res_ptr, result_type, type,
485
0
                                                                      data, offsets, create_column);
486
0
    }
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE2ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE3ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE30EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_28EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_29EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_30EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
Unexecuted instantiation: _ZN5doris27ArrayAggregateImplDecimalV3ILNS_18AggregateOperationE4ELNS_13PrimitiveTypeE35EE12execute_typeILS2_35EEEbRNS_3COWINS_7IColumnEE13immutable_ptrIS6_EERKSt10shared_ptrIKNS_9IDataTypeEESG_PKS6_RKNS_8PODArrayImLm4096ENS_9AllocatorILb0ELb0ELb0ENS_22DefaultMemoryAllocatorELb1EEELm16ELm15EEE
487
};
488
489
template <typename Impl, typename Name>
490
class FunctionArrayAggDecimalV3 : public IFunction {
491
public:
492
    static constexpr auto name = Name::name;
493
    explicit FunctionArrayAggDecimalV3(DataTypePtr result_type)
494
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
495
496
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
497
    Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
498
0
                        uint32_t result, size_t input_rows_count) const override {
499
0
        const auto& typed_column = block.get_by_position(arguments[0]);
500
0
        auto ptr = typed_column.column->convert_to_full_column_if_const();
501
0
        const typename Impl::column_type* column_array;
502
0
        if (is_column_nullable(*ptr)) {
503
0
            column_array = assert_cast<const typename Impl::column_type*>(
504
0
                    assert_cast<const ColumnNullable*>(ptr.get())->get_nested_column_ptr().get());
505
0
        } else {
506
0
            column_array = assert_cast<const typename Impl::column_type*>(ptr.get());
507
0
        }
508
0
        const auto* data_type_array =
509
0
                assert_cast<const DataTypeArray*>(remove_nullable(typed_column.type).get());
510
0
        return Impl::execute(block, arguments, result, _result_type, data_type_array,
511
0
                             *column_array);
512
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
513
514
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
515
516
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
517
518
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
519
520
0
    DataTypePtr get_return_type_impl(const DataTypes& arguments) const override {
521
0
        return Impl::get_return_type(arguments);
522
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
523
524
private:
525
    DataTypePtr _result_type;
526
};
527
template <PrimitiveType ResultType>
528
struct ArraySumDecimalV3Attributes {
529
    static_assert(is_decimalv3(ResultType));
530
    using AggregateDataType = AggregateFunctionSumData<ResultType>;
531
    using Function = FunctionArrayAggDecimalV3<
532
            ArrayAggregateImplDecimalV3<AggregateOperation::SUM, ResultType>, NameArraySum>;
533
};
534
template <PrimitiveType ResultType>
535
using ArraySumDecimalV3 = typename ArraySumDecimalV3Attributes<ResultType>::Function;
536
537
template <PrimitiveType ResultType>
538
struct ArrayAvgDecimalV3Attributes {
539
    static_assert(is_decimalv3(ResultType));
540
    using AggregateDataType = AggregateFunctionAvgData<ResultType>;
541
    using Function = FunctionArrayAggDecimalV3<
542
            ArrayAggregateImplDecimalV3<AggregateOperation::AVERAGE, ResultType>, NameArrayAverage>;
543
};
544
template <PrimitiveType ResultType>
545
using ArrayAvgDecimalV3 = typename ArrayAvgDecimalV3Attributes<ResultType>::Function;
546
547
template <PrimitiveType ResultType>
548
struct ArrayProductDecimalV3Attributes {
549
    static_assert(is_decimalv3(ResultType));
550
    using AggregateDataType = AggregateFunctionProductData<ResultType>;
551
    using Function = FunctionArrayAggDecimalV3<
552
            ArrayAggregateImplDecimalV3<AggregateOperation::PRODUCT, ResultType>, NameArrayProduct>;
553
};
554
template <PrimitiveType ResultType>
555
using ArrayProductDecimalV3 = typename ArrayProductDecimalV3Attributes<ResultType>::Function;
556
1
void register_array_reduce_agg_functions(SimpleFunctionFactory& factory) {
557
1
    {
558
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
559
14
            if (is_decimalv3(result_type->get_primitive_type())) {
560
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
561
0
                        ArraySumDecimalV3>(result_type);
562
14
            } else {
563
14
                FunctionBuilderPtr func =
564
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArraySum::create());
565
14
                return func;
566
14
            }
567
14
        };
568
1
        factory.register_array_agg_function(NameArraySum::name, creator);
569
1
    }
570
1
    {
571
14
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
572
14
            if (is_decimalv3(result_type->get_primitive_type())) {
573
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
574
0
                        ArrayAvgDecimalV3>(result_type);
575
14
            } else {
576
14
                FunctionBuilderPtr func =
577
14
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayAverage::create());
578
14
                return func;
579
14
            }
580
14
        };
581
1
        factory.register_array_agg_function(NameArrayAverage::name, creator);
582
1
    }
583
1
    {
584
10
        ArrayAggFunctionCreator creator = [&](const DataTypePtr& result_type) {
585
10
            if (is_decimalv3(result_type->get_primitive_type())) {
586
0
                return DefaultFunctionBuilder::create_array_agg_function_decimalv3<
587
0
                        ArrayProductDecimalV3>(result_type);
588
10
            } else {
589
10
                FunctionBuilderPtr func =
590
10
                        std::make_shared<DefaultFunctionBuilder>(FunctionArrayProduct::create());
591
10
                return func;
592
10
            }
593
10
        };
594
1
        factory.register_array_agg_function(NameArrayProduct::name, creator);
595
1
    }
596
1
}
597
598
1
void register_function_array_aggregation(SimpleFunctionFactory& factory) {
599
1
    factory.register_function<FunctionArrayMin>();
600
1
    factory.register_function<FunctionArrayMax>();
601
1
    factory.register_function<FunctionArrayJoin>();
602
1
    register_array_reduce_agg_functions(factory);
603
1
}
604
605
} // namespace doris