Coverage Report

Created: 2026-03-16 15:31

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/aggregate/aggregate_function_array_agg.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
18
#include "exprs/aggregate/aggregate_function_array_agg.h"
19
20
#include "core/call_on_type_index.h"
21
#include "exprs/aggregate/aggregate_function_collect.h"
22
#include "exprs/aggregate/aggregate_function_simple_factory.h"
23
#include "exprs/aggregate/helpers.h"
24
25
namespace doris {
26
#include "common/compile_check_begin.h"
27
28
template <PrimitiveType T>
29
AggregateFunctionPtr do_create_agg_function_collect(const DataTypes& argument_types,
30
                                                    const bool result_is_nullable,
31
8
                                                    const AggregateFunctionAttr& attr) {
32
8
    if (argument_types[0]->is_nullable()) {
33
4
        return creator_without_type::create_ignore_nullable<
34
4
                AggregateFunctionArrayAgg<AggregateFunctionArrayAggData<T>>>(
35
4
                argument_types, result_is_nullable, attr);
36
4
    } else {
37
4
        return creator_without_type::create<
38
4
                AggregateFunctionCollect<AggregateFunctionCollectListData<T, false>, false>>(
39
4
                argument_types, result_is_nullable, attr);
40
4
    }
41
8
}
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE2EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE3EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE4EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE5EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
_ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE6EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Line
Count
Source
31
3
                                                    const AggregateFunctionAttr& attr) {
32
3
    if (argument_types[0]->is_nullable()) {
33
2
        return creator_without_type::create_ignore_nullable<
34
2
                AggregateFunctionArrayAgg<AggregateFunctionArrayAggData<T>>>(
35
2
                argument_types, result_is_nullable, attr);
36
2
    } else {
37
1
        return creator_without_type::create<
38
1
                AggregateFunctionCollect<AggregateFunctionCollectListData<T, false>, false>>(
39
1
                argument_types, result_is_nullable, attr);
40
1
    }
41
3
}
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE7EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE8EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE9EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE28EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE29EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE20EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE30EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE35EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE11EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE25EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE26EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE12EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE27EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE42EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE36EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Unexecuted instantiation: _ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE37EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
_ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE23EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Line
Count
Source
31
2
                                                    const AggregateFunctionAttr& attr) {
32
2
    if (argument_types[0]->is_nullable()) {
33
2
        return creator_without_type::create_ignore_nullable<
34
2
                AggregateFunctionArrayAgg<AggregateFunctionArrayAggData<T>>>(
35
2
                argument_types, result_is_nullable, attr);
36
2
    } else {
37
0
        return creator_without_type::create<
38
0
                AggregateFunctionCollect<AggregateFunctionCollectListData<T, false>, false>>(
39
0
                argument_types, result_is_nullable, attr);
40
0
    }
41
2
}
_ZN5doris30do_create_agg_function_collectILNS_13PrimitiveTypeE0EEESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS2_IKNS_9IDataTypeEESaIS8_EEbRKNS_21AggregateFunctionAttrE
Line
Count
Source
31
3
                                                    const AggregateFunctionAttr& attr) {
32
3
    if (argument_types[0]->is_nullable()) {
33
0
        return creator_without_type::create_ignore_nullable<
34
0
                AggregateFunctionArrayAgg<AggregateFunctionArrayAggData<T>>>(
35
0
                argument_types, result_is_nullable, attr);
36
3
    } else {
37
3
        return creator_without_type::create<
38
3
                AggregateFunctionCollect<AggregateFunctionCollectListData<T, false>, false>>(
39
3
                argument_types, result_is_nullable, attr);
40
3
    }
41
3
}
42
43
AggregateFunctionPtr create_aggregate_function_array_agg(const std::string& name,
44
                                                         const DataTypes& argument_types,
45
                                                         const DataTypePtr& result_type,
46
                                                         const bool result_is_nullable,
47
8
                                                         const AggregateFunctionAttr& attr) {
48
8
    AggregateFunctionPtr agg_fn;
49
8
    auto call = [&](const auto& type) -> bool {
50
5
        using DispatcType = std::decay_t<decltype(type)>;
51
5
        agg_fn = do_create_agg_function_collect<DispatcType::PType>(argument_types,
52
5
                                                                    result_is_nullable, attr);
53
5
        return true;
54
5
    };
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE2EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE3EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE4EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE5EEEEEbRKT_
aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE6EEEEEbRKT_
Line
Count
Source
49
3
    auto call = [&](const auto& type) -> bool {
50
3
        using DispatcType = std::decay_t<decltype(type)>;
51
3
        agg_fn = do_create_agg_function_collect<DispatcType::PType>(argument_types,
52
3
                                                                    result_is_nullable, attr);
53
3
        return true;
54
3
    };
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE7EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE8EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE9EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE28EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE29EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE20EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE30EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE35EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE11EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE25EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE26EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE12EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE27EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE42EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE36EEEEEbRKT_
Unexecuted instantiation: aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE37EEEEEbRKT_
aggregate_function_array_agg.cpp:_ZZN5doris35create_aggregate_function_array_aggERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaISC_EERKSC_bRKNS_21AggregateFunctionAttrEENK3$_0clINS_16DispatchDataTypeILNS_13PrimitiveTypeE23EEEEEbRKT_
Line
Count
Source
49
2
    auto call = [&](const auto& type) -> bool {
50
2
        using DispatcType = std::decay_t<decltype(type)>;
51
2
        agg_fn = do_create_agg_function_collect<DispatcType::PType>(argument_types,
52
2
                                                                    result_is_nullable, attr);
53
2
        return true;
54
2
    };
55
56
8
    if (!dispatch_switch_all(argument_types[0]->get_primitive_type(), call)) {
57
        // We do not care what the real type is.
58
3
        agg_fn = do_create_agg_function_collect<INVALID_TYPE>(argument_types, result_is_nullable,
59
3
                                                              attr);
60
3
    }
61
8
    return agg_fn;
62
8
}
63
64
1
void register_aggregate_function_array_agg(AggregateFunctionSimpleFactory& factory) {
65
1
    factory.register_function_both("array_agg", create_aggregate_function_array_agg);
66
1
}
67
} // namespace doris