Coverage Report

Created: 2026-06-14 07:02

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
be/src/exprs/aggregate/aggregate_function_distinct.h
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/AggregateFunctions/AggregateFunctionDistinct.h
19
// and modified by Doris
20
21
#pragma once
22
23
#include <assert.h>
24
#include <glog/logging.h>
25
#include <stddef.h>
26
27
#include <type_traits>
28
#include <utility>
29
#include <vector>
30
31
#include "core/assert_cast.h"
32
#include "core/column/column.h"
33
#include "core/data_type/data_type.h"
34
#include "core/string_ref.h"
35
#include "core/types.h"
36
#include "exprs/aggregate/aggregate_function.h"
37
38
namespace doris {
39
class Arena;
40
class BufferReadable;
41
class BufferWritable;
42
template <PrimitiveType>
43
class ColumnVector;
44
} // namespace doris
45
template <typename, typename>
46
struct DefaultHash;
47
48
namespace doris {
49
50
template <PrimitiveType T, bool stable>
51
struct AggregateFunctionDistinctSingleNumericData {
52
    /// When creating, the hash table must be small.
53
    using Container = std::conditional_t<
54
            stable, doris::flat_hash_map<typename PrimitiveTypeTraits<T>::CppType, uint32_t>,
55
            doris::flat_hash_set<typename PrimitiveTypeTraits<T>::CppType>>;
56
    using Self = AggregateFunctionDistinctSingleNumericData<T, stable>;
57
    Container data;
58
59
453
    void clear() { data.clear(); }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE5clearEv
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE5clearEv
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE5clearEv
Line
Count
Source
59
3
    void clear() { data.clear(); }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE5clearEv
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE5clearEv
Line
Count
Source
59
359
    void clear() { data.clear(); }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE5clearEv
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE5clearEv
Line
Count
Source
59
91
    void clear() { data.clear(); }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE5clearEv
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE5clearEv
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE5clearEv
60
61
862
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) {
62
862
        const auto& vec =
63
862
                assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0])
64
862
                        .get_data();
65
862
        if constexpr (stable) {
66
0
            data.emplace(vec[row_num], data.size());
67
862
        } else {
68
862
            data.insert(vec[row_num]);
69
862
        }
70
862
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
61
3
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) {
62
3
        const auto& vec =
63
3
                assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0])
64
3
                        .get_data();
65
        if constexpr (stable) {
66
            data.emplace(vec[row_num], data.size());
67
3
        } else {
68
3
            data.insert(vec[row_num]);
69
3
        }
70
3
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
61
732
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) {
62
732
        const auto& vec =
63
732
                assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0])
64
732
                        .get_data();
65
        if constexpr (stable) {
66
            data.emplace(vec[row_num], data.size());
67
732
        } else {
68
732
            data.insert(vec[row_num]);
69
732
        }
70
732
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
61
127
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) {
62
127
        const auto& vec =
63
127
                assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0])
64
127
                        .get_data();
65
        if constexpr (stable) {
66
            data.emplace(vec[row_num], data.size());
67
127
        } else {
68
127
            data.insert(vec[row_num]);
69
127
        }
70
127
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
71
72
536
    void merge(const Self& rhs, Arena&) {
73
536
        DCHECK(!stable);
74
536
        if constexpr (!stable) {
75
536
            data.merge(Container(rhs.data));
76
536
        }
77
536
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE5mergeERKS2_RNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE5mergeERKS2_RNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE5mergeERKS2_RNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE5mergeERKS2_RNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE5mergeERKS2_RNS_5ArenaE
Line
Count
Source
72
470
    void merge(const Self& rhs, Arena&) {
73
470
        DCHECK(!stable);
74
470
        if constexpr (!stable) {
75
470
            data.merge(Container(rhs.data));
76
470
        }
77
470
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE5mergeERKS2_RNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE5mergeERKS2_RNS_5ArenaE
Line
Count
Source
72
66
    void merge(const Self& rhs, Arena&) {
73
66
        DCHECK(!stable);
74
66
        if constexpr (!stable) {
75
66
            data.merge(Container(rhs.data));
76
66
        }
77
66
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE5mergeERKS2_RNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE5mergeERKS2_RNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE5mergeERKS2_RNS_5ArenaE
78
79
614
    void serialize(BufferWritable& buf) const {
80
614
        DCHECK(!stable);
81
614
        if constexpr (!stable) {
82
614
            buf.write_var_uint(data.size());
83
614
            for (const auto& value : data) {
84
612
                buf.write_binary(value);
85
612
            }
86
614
        }
87
614
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE9serializeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE9serializeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE9serializeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE9serializeERNS_14BufferWritableE
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE9serializeERNS_14BufferWritableE
Line
Count
Source
79
548
    void serialize(BufferWritable& buf) const {
80
548
        DCHECK(!stable);
81
548
        if constexpr (!stable) {
82
548
            buf.write_var_uint(data.size());
83
548
            for (const auto& value : data) {
84
548
                buf.write_binary(value);
85
548
            }
86
548
        }
87
548
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE9serializeERNS_14BufferWritableE
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE9serializeERNS_14BufferWritableE
Line
Count
Source
79
66
    void serialize(BufferWritable& buf) const {
80
66
        DCHECK(!stable);
81
66
        if constexpr (!stable) {
82
66
            buf.write_var_uint(data.size());
83
66
            for (const auto& value : data) {
84
64
                buf.write_binary(value);
85
64
            }
86
66
        }
87
66
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE9serializeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE9serializeERNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE9serializeERNS_14BufferWritableE
88
89
536
    void deserialize(BufferReadable& buf, Arena&) {
90
536
        DCHECK(!stable);
91
536
        if constexpr (!stable) {
92
536
            uint64_t new_size = 0;
93
536
            buf.read_var_uint(new_size);
94
536
            typename PrimitiveTypeTraits<T>::CppType x;
95
1.07k
            for (size_t i = 0; i < new_size; ++i) {
96
534
                buf.read_binary(x);
97
534
                data.insert(x);
98
534
            }
99
536
        }
100
536
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
89
470
    void deserialize(BufferReadable& buf, Arena&) {
90
470
        DCHECK(!stable);
91
470
        if constexpr (!stable) {
92
470
            uint64_t new_size = 0;
93
470
            buf.read_var_uint(new_size);
94
470
            typename PrimitiveTypeTraits<T>::CppType x;
95
940
            for (size_t i = 0; i < new_size; ++i) {
96
470
                buf.read_binary(x);
97
470
                data.insert(x);
98
470
            }
99
470
        }
100
470
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
89
66
    void deserialize(BufferReadable& buf, Arena&) {
90
66
        DCHECK(!stable);
91
66
        if constexpr (!stable) {
92
66
            uint64_t new_size = 0;
93
66
            buf.read_var_uint(new_size);
94
66
            typename PrimitiveTypeTraits<T>::CppType x;
95
130
            for (size_t i = 0; i < new_size; ++i) {
96
64
                buf.read_binary(x);
97
64
                data.insert(x);
98
64
            }
99
66
        }
100
66
    }
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
101
102
380
    MutableColumns get_arguments(const DataTypes& argument_types) const {
103
380
        MutableColumns argument_columns;
104
380
        argument_columns.emplace_back(argument_types[0]->create_column());
105
106
380
        if constexpr (stable) {
107
0
            argument_columns[0]->resize(data.size());
108
            // argument_columns[0] is a mutable column created using create_column.
109
            // since get_raw_data returns a StringRef, const_cast is required here.
110
0
            auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>(
111
0
                    argument_columns[0]->get_raw_data().data);
112
0
            for (auto it : data) {
113
0
                ptr[it.second] = it.first;
114
0
            }
115
380
        } else {
116
477
            for (const auto& elem : data) {
117
477
                argument_columns[0]->insert(Field::create_field<T>(elem));
118
477
            }
119
380
        }
120
121
380
        return argument_columns;
122
380
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
102
3
    MutableColumns get_arguments(const DataTypes& argument_types) const {
103
3
        MutableColumns argument_columns;
104
3
        argument_columns.emplace_back(argument_types[0]->create_column());
105
106
        if constexpr (stable) {
107
            argument_columns[0]->resize(data.size());
108
            // argument_columns[0] is a mutable column created using create_column.
109
            // since get_raw_data returns a StringRef, const_cast is required here.
110
            auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>(
111
                    argument_columns[0]->get_raw_data().data);
112
            for (auto it : data) {
113
                ptr[it.second] = it.first;
114
            }
115
3
        } else {
116
3
            for (const auto& elem : data) {
117
3
                argument_columns[0]->insert(Field::create_field<T>(elem));
118
3
            }
119
3
        }
120
121
3
        return argument_columns;
122
3
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
102
302
    MutableColumns get_arguments(const DataTypes& argument_types) const {
103
302
        MutableColumns argument_columns;
104
302
        argument_columns.emplace_back(argument_types[0]->create_column());
105
106
        if constexpr (stable) {
107
            argument_columns[0]->resize(data.size());
108
            // argument_columns[0] is a mutable column created using create_column.
109
            // since get_raw_data returns a StringRef, const_cast is required here.
110
            auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>(
111
                    argument_columns[0]->get_raw_data().data);
112
            for (auto it : data) {
113
                ptr[it.second] = it.first;
114
            }
115
302
        } else {
116
383
            for (const auto& elem : data) {
117
383
                argument_columns[0]->insert(Field::create_field<T>(elem));
118
383
            }
119
302
        }
120
121
302
        return argument_columns;
122
302
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Line
Count
Source
102
75
    MutableColumns get_arguments(const DataTypes& argument_types) const {
103
75
        MutableColumns argument_columns;
104
75
        argument_columns.emplace_back(argument_types[0]->create_column());
105
106
        if constexpr (stable) {
107
            argument_columns[0]->resize(data.size());
108
            // argument_columns[0] is a mutable column created using create_column.
109
            // since get_raw_data returns a StringRef, const_cast is required here.
110
            auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>(
111
                    argument_columns[0]->get_raw_data().data);
112
            for (auto it : data) {
113
                ptr[it.second] = it.first;
114
            }
115
75
        } else {
116
91
            for (const auto& elem : data) {
117
91
                argument_columns[0]->insert(Field::create_field<T>(elem));
118
91
            }
119
75
        }
120
121
75
        return argument_columns;
122
75
    }
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE
123
};
124
125
template <bool stable>
126
struct AggregateFunctionDistinctGenericData {
127
    /// When creating, the hash table must be small.
128
    using Container = std::conditional_t<stable, doris::flat_hash_map<StringRef, uint32_t>,
129
                                         doris::flat_hash_set<StringRef, StringRefHash>>;
130
    using Self = AggregateFunctionDistinctGenericData;
131
    Container data;
132
133
321
    void clear() { data.clear(); }
_ZN5doris36AggregateFunctionDistinctGenericDataILb0EE5clearEv
Line
Count
Source
133
235
    void clear() { data.clear(); }
_ZN5doris36AggregateFunctionDistinctGenericDataILb1EE5clearEv
Line
Count
Source
133
86
    void clear() { data.clear(); }
134
135
223
    void merge(const Self& rhs, Arena& arena) {
136
223
        DCHECK(!stable);
137
223
        if constexpr (!stable) {
138
253
            for (const auto& elem : rhs.data) {
139
253
                StringRef key = elem;
140
253
                key.data = arena.insert(key.data, key.size);
141
253
                data.emplace(key);
142
253
            }
143
223
        }
144
223
    }
_ZN5doris36AggregateFunctionDistinctGenericDataILb0EE5mergeERKS1_RNS_5ArenaE
Line
Count
Source
135
223
    void merge(const Self& rhs, Arena& arena) {
136
223
        DCHECK(!stable);
137
223
        if constexpr (!stable) {
138
253
            for (const auto& elem : rhs.data) {
139
253
                StringRef key = elem;
140
253
                key.data = arena.insert(key.data, key.size);
141
253
                data.emplace(key);
142
253
            }
143
223
        }
144
223
    }
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE5mergeERKS1_RNS_5ArenaE
145
146
269
    void serialize(BufferWritable& buf) const {
147
269
        DCHECK(!stable);
148
269
        if constexpr (!stable) {
149
269
            buf.write_var_uint(data.size());
150
301
            for (const auto& elem : data) {
151
301
                buf.write_binary(elem);
152
301
            }
153
269
        }
154
269
    }
_ZNK5doris36AggregateFunctionDistinctGenericDataILb0EE9serializeERNS_14BufferWritableE
Line
Count
Source
146
269
    void serialize(BufferWritable& buf) const {
147
269
        DCHECK(!stable);
148
269
        if constexpr (!stable) {
149
269
            buf.write_var_uint(data.size());
150
301
            for (const auto& elem : data) {
151
301
                buf.write_binary(elem);
152
301
            }
153
269
        }
154
269
    }
Unexecuted instantiation: _ZNK5doris36AggregateFunctionDistinctGenericDataILb1EE9serializeERNS_14BufferWritableE
155
156
222
    void deserialize(BufferReadable& buf, Arena& arena) {
157
222
        DCHECK(!stable);
158
222
        if constexpr (!stable) {
159
222
            UInt64 size;
160
222
            buf.read_var_uint(size);
161
162
222
            StringRef ref;
163
475
            for (size_t i = 0; i < size; ++i) {
164
253
                buf.read_binary(ref);
165
253
                data.insert(ref);
166
253
            }
167
222
        }
168
222
    }
_ZN5doris36AggregateFunctionDistinctGenericDataILb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
156
222
    void deserialize(BufferReadable& buf, Arena& arena) {
157
222
        DCHECK(!stable);
158
222
        if constexpr (!stable) {
159
222
            UInt64 size;
160
222
            buf.read_var_uint(size);
161
162
222
            StringRef ref;
163
475
            for (size_t i = 0; i < size; ++i) {
164
253
                buf.read_binary(ref);
165
253
                data.insert(ref);
166
253
            }
167
222
        }
168
222
    }
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE
169
};
170
171
template <bool stable>
172
struct AggregateFunctionDistinctSingleGenericData
173
        : public AggregateFunctionDistinctGenericData<stable> {
174
    using Base = AggregateFunctionDistinctGenericData<stable>;
175
    using Base::data;
176
694
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena& arena) {
177
694
        auto key = columns[0]->get_data_at(row_num);
178
694
        key.data = arena.insert(key.data, key.size);
179
180
694
        if constexpr (stable) {
181
164
            data.emplace(key, data.size());
182
530
        } else {
183
530
            data.insert(key);
184
530
        }
185
694
    }
_ZN5doris42AggregateFunctionDistinctSingleGenericDataILb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
176
530
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena& arena) {
177
530
        auto key = columns[0]->get_data_at(row_num);
178
530
        key.data = arena.insert(key.data, key.size);
179
180
        if constexpr (stable) {
181
            data.emplace(key, data.size());
182
530
        } else {
183
530
            data.insert(key);
184
530
        }
185
530
    }
_ZN5doris42AggregateFunctionDistinctSingleGenericDataILb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
176
164
    void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena& arena) {
177
164
        auto key = columns[0]->get_data_at(row_num);
178
164
        key.data = arena.insert(key.data, key.size);
179
180
164
        if constexpr (stable) {
181
164
            data.emplace(key, data.size());
182
        } else {
183
            data.insert(key);
184
        }
185
164
    }
186
187
227
    MutableColumns get_arguments(const DataTypes& argument_types) const {
188
227
        MutableColumns argument_columns;
189
227
        argument_columns.emplace_back(argument_types[0]->create_column());
190
227
        if constexpr (stable) {
191
57
            std::vector<StringRef> tmp(data.size());
192
95
            for (auto it : data) {
193
95
                tmp[it.second] = it.first;
194
95
            }
195
152
            for (int i = 0; i < data.size(); i++) {
196
95
                argument_columns[0]->insert_data(tmp[i].data, tmp[i].size);
197
95
            }
198
170
        } else {
199
254
            for (const auto& elem : data) {
200
254
                argument_columns[0]->insert_data(elem.data, elem.size);
201
254
            }
202
170
        }
203
204
227
        return argument_columns;
205
227
    }
_ZNK5doris42AggregateFunctionDistinctSingleGenericDataILb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
187
170
    MutableColumns get_arguments(const DataTypes& argument_types) const {
188
170
        MutableColumns argument_columns;
189
170
        argument_columns.emplace_back(argument_types[0]->create_column());
190
        if constexpr (stable) {
191
            std::vector<StringRef> tmp(data.size());
192
            for (auto it : data) {
193
                tmp[it.second] = it.first;
194
            }
195
            for (int i = 0; i < data.size(); i++) {
196
                argument_columns[0]->insert_data(tmp[i].data, tmp[i].size);
197
            }
198
170
        } else {
199
254
            for (const auto& elem : data) {
200
254
                argument_columns[0]->insert_data(elem.data, elem.size);
201
254
            }
202
170
        }
203
204
170
        return argument_columns;
205
170
    }
_ZNK5doris42AggregateFunctionDistinctSingleGenericDataILb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
187
57
    MutableColumns get_arguments(const DataTypes& argument_types) const {
188
57
        MutableColumns argument_columns;
189
57
        argument_columns.emplace_back(argument_types[0]->create_column());
190
57
        if constexpr (stable) {
191
57
            std::vector<StringRef> tmp(data.size());
192
95
            for (auto it : data) {
193
95
                tmp[it.second] = it.first;
194
95
            }
195
152
            for (int i = 0; i < data.size(); i++) {
196
95
                argument_columns[0]->insert_data(tmp[i].data, tmp[i].size);
197
95
            }
198
        } else {
199
            for (const auto& elem : data) {
200
                argument_columns[0]->insert_data(elem.data, elem.size);
201
            }
202
        }
203
204
57
        return argument_columns;
205
57
    }
206
};
207
208
template <bool stable>
209
struct AggregateFunctionDistinctMultipleGenericData
210
        : public AggregateFunctionDistinctGenericData<stable> {
211
    using Base = AggregateFunctionDistinctGenericData<stable>;
212
    using Base::data;
213
84
    void add(const IColumn** columns, size_t columns_num, size_t row_num, Arena& arena) {
214
84
        const char* begin = nullptr;
215
84
        StringRef key(begin, 0);
216
252
        for (size_t i = 0; i < columns_num; ++i) {
217
168
            auto cur_ref = columns[i]->serialize_value_into_arena(row_num, arena, begin);
218
168
            key.data = cur_ref.data - key.size;
219
168
            key.size += cur_ref.size;
220
168
        }
221
222
84
        if constexpr (stable) {
223
55
            data.emplace(key, data.size());
224
55
        } else {
225
29
            data.emplace(key);
226
29
        }
227
84
    }
_ZN5doris44AggregateFunctionDistinctMultipleGenericDataILb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
213
29
    void add(const IColumn** columns, size_t columns_num, size_t row_num, Arena& arena) {
214
29
        const char* begin = nullptr;
215
29
        StringRef key(begin, 0);
216
87
        for (size_t i = 0; i < columns_num; ++i) {
217
58
            auto cur_ref = columns[i]->serialize_value_into_arena(row_num, arena, begin);
218
58
            key.data = cur_ref.data - key.size;
219
58
            key.size += cur_ref.size;
220
58
        }
221
222
        if constexpr (stable) {
223
            data.emplace(key, data.size());
224
29
        } else {
225
29
            data.emplace(key);
226
29
        }
227
29
    }
_ZN5doris44AggregateFunctionDistinctMultipleGenericDataILb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE
Line
Count
Source
213
55
    void add(const IColumn** columns, size_t columns_num, size_t row_num, Arena& arena) {
214
55
        const char* begin = nullptr;
215
55
        StringRef key(begin, 0);
216
165
        for (size_t i = 0; i < columns_num; ++i) {
217
110
            auto cur_ref = columns[i]->serialize_value_into_arena(row_num, arena, begin);
218
110
            key.data = cur_ref.data - key.size;
219
110
            key.size += cur_ref.size;
220
110
        }
221
222
55
        if constexpr (stable) {
223
55
            data.emplace(key, data.size());
224
        } else {
225
            data.emplace(key);
226
        }
227
55
    }
228
229
47
    MutableColumns get_arguments(const DataTypes& argument_types) const {
230
47
        MutableColumns argument_columns(argument_types.size());
231
141
        for (size_t i = 0; i < argument_types.size(); ++i) {
232
94
            argument_columns[i] = argument_types[i]->create_column();
233
94
        }
234
235
47
        if constexpr (stable) {
236
29
            std::vector<StringRef> tmp(data.size());
237
54
            for (auto it : data) {
238
54
                tmp[it.second] = it.first;
239
54
            }
240
83
            for (int i = 0; i < data.size(); i++) {
241
54
                const char* begin = tmp[i].data;
242
108
                for (auto& column : argument_columns) {
243
108
                    begin = column->deserialize_and_insert_from_arena(begin);
244
108
                }
245
54
            }
246
29
        } else {
247
18
            for (const auto& elem : data) {
248
18
                const char* begin = elem.data;
249
36
                for (auto& column : argument_columns) {
250
36
                    begin = column->deserialize_and_insert_from_arena(begin);
251
36
                }
252
18
            }
253
18
        }
254
255
47
        return argument_columns;
256
47
    }
_ZNK5doris44AggregateFunctionDistinctMultipleGenericDataILb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
229
18
    MutableColumns get_arguments(const DataTypes& argument_types) const {
230
18
        MutableColumns argument_columns(argument_types.size());
231
54
        for (size_t i = 0; i < argument_types.size(); ++i) {
232
36
            argument_columns[i] = argument_types[i]->create_column();
233
36
        }
234
235
        if constexpr (stable) {
236
            std::vector<StringRef> tmp(data.size());
237
            for (auto it : data) {
238
                tmp[it.second] = it.first;
239
            }
240
            for (int i = 0; i < data.size(); i++) {
241
                const char* begin = tmp[i].data;
242
                for (auto& column : argument_columns) {
243
                    begin = column->deserialize_and_insert_from_arena(begin);
244
                }
245
            }
246
18
        } else {
247
18
            for (const auto& elem : data) {
248
18
                const char* begin = elem.data;
249
36
                for (auto& column : argument_columns) {
250
36
                    begin = column->deserialize_and_insert_from_arena(begin);
251
36
                }
252
18
            }
253
18
        }
254
255
18
        return argument_columns;
256
18
    }
_ZNK5doris44AggregateFunctionDistinctMultipleGenericDataILb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE
Line
Count
Source
229
29
    MutableColumns get_arguments(const DataTypes& argument_types) const {
230
29
        MutableColumns argument_columns(argument_types.size());
231
87
        for (size_t i = 0; i < argument_types.size(); ++i) {
232
58
            argument_columns[i] = argument_types[i]->create_column();
233
58
        }
234
235
29
        if constexpr (stable) {
236
29
            std::vector<StringRef> tmp(data.size());
237
54
            for (auto it : data) {
238
54
                tmp[it.second] = it.first;
239
54
            }
240
83
            for (int i = 0; i < data.size(); i++) {
241
54
                const char* begin = tmp[i].data;
242
108
                for (auto& column : argument_columns) {
243
108
                    begin = column->deserialize_and_insert_from_arena(begin);
244
108
                }
245
54
            }
246
        } else {
247
            for (const auto& elem : data) {
248
                const char* begin = elem.data;
249
                for (auto& column : argument_columns) {
250
                    begin = column->deserialize_and_insert_from_arena(begin);
251
                }
252
            }
253
        }
254
255
29
        return argument_columns;
256
29
    }
257
};
258
259
/** Adaptor for aggregate functions.
260
  * Adding -Distinct suffix to aggregate function
261
**/
262
template <template <bool stable> typename Data, bool stable = false>
263
class AggregateFunctionDistinct final
264
        : public IAggregateFunctionDataHelper<Data<stable>,
265
                                              AggregateFunctionDistinct<Data, stable>>,
266
          VarargsExpression,
267
          NullableAggregateFunction {
268
private:
269
    size_t prefix_size;
270
    AggregateFunctionPtr nested_func;
271
    size_t arguments_num;
272
273
6.56k
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
6.56k
        return place + prefix_size;
275
6.56k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE16get_nested_placeEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE16get_nested_placeEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE16get_nested_placeEPc
Line
Count
Source
273
14
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
14
        return place + prefix_size;
275
14
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE16get_nested_placeEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE16get_nested_placeEPc
Line
Count
Source
273
3.36k
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
3.36k
        return place + prefix_size;
275
3.36k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE16get_nested_placeEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE16get_nested_placeEPc
Line
Count
Source
273
626
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
626
        return place + prefix_size;
275
626
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE16get_nested_placeEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE16get_nested_placeEPc
Line
Count
Source
273
2
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
2
        return place + prefix_size;
275
2
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE16get_nested_placeEPc
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE16get_nested_placeEPc
Line
Count
Source
273
1.68k
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
1.68k
        return place + prefix_size;
275
1.68k
    }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE16get_nested_placeEPc
Line
Count
Source
273
492
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
492
        return place + prefix_size;
275
492
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE16get_nested_placeEPc
Line
Count
Source
273
136
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
136
        return place + prefix_size;
275
136
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE16get_nested_placeEPc
Line
Count
Source
273
249
    AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept {
274
249
        return place + prefix_size;
275
249
    }
276
277
    ConstAggregateDataPtr get_nested_place(ConstAggregateDataPtr __restrict place) const noexcept {
278
        return place + prefix_size;
279
    }
280
281
public:
282
    AggregateFunctionDistinct(AggregateFunctionPtr nested_func_, const DataTypes& arguments)
283
2.23k
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
2.23k
                      arguments),
285
2.23k
              nested_func(std::move(nested_func_)),
286
2.23k
              arguments_num(arguments.size()) {
287
2.23k
        size_t nested_size = nested_func->align_of_data();
288
2.23k
        CHECK_GT(nested_size, 0);
289
2.23k
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
2.23k
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
_ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
Line
Count
Source
283
2
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
2
                      arguments),
285
2
              nested_func(std::move(nested_func_)),
286
2
              arguments_num(arguments.size()) {
287
2
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
2
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
2
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
_ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
Line
Count
Source
283
915
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
915
                      arguments),
285
915
              nested_func(std::move(nested_func_)),
286
915
              arguments_num(arguments.size()) {
287
915
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
915
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
915
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
_ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
Line
Count
Source
283
359
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
359
                      arguments),
285
359
              nested_func(std::move(nested_func_)),
286
359
              arguments_num(arguments.size()) {
287
359
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
359
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
359
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
_ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
Line
Count
Source
283
1
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
1
                      arguments),
285
1
              nested_func(std::move(nested_func_)),
286
1
              arguments_num(arguments.size()) {
287
1
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
1
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
1
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE
_ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
283
883
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
883
                      arguments),
285
883
              nested_func(std::move(nested_func_)),
286
883
              arguments_num(arguments.size()) {
287
883
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
883
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
883
    }
_ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
283
43
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
43
                      arguments),
285
43
              nested_func(std::move(nested_func_)),
286
43
              arguments_num(arguments.size()) {
287
43
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
43
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
43
    }
_ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
283
25
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
25
                      arguments),
285
25
              nested_func(std::move(nested_func_)),
286
25
              arguments_num(arguments.size()) {
287
25
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
25
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
25
    }
_ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE
Line
Count
Source
283
10
            : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>(
284
10
                      arguments),
285
10
              nested_func(std::move(nested_func_)),
286
10
              arguments_num(arguments.size()) {
287
10
        size_t nested_size = nested_func->align_of_data();
288
        CHECK_GT(nested_size, 0);
289
10
        prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size;
290
10
    }
291
292
    void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num,
293
1.64k
             Arena& arena) const override {
294
1.64k
        this->data(place).add(columns, arguments_num, row_num, arena);
295
1.64k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
3
             Arena& arena) const override {
294
3
        this->data(place).add(columns, arguments_num, row_num, arena);
295
3
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
736
             Arena& arena) const override {
294
736
        this->data(place).add(columns, arguments_num, row_num, arena);
295
736
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
127
             Arena& arena) const override {
294
127
        this->data(place).add(columns, arguments_num, row_num, arena);
295
127
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
530
             Arena& arena) const override {
294
530
        this->data(place).add(columns, arguments_num, row_num, arena);
295
530
    }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
164
             Arena& arena) const override {
294
164
        this->data(place).add(columns, arguments_num, row_num, arena);
295
164
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
29
             Arena& arena) const override {
294
29
        this->data(place).add(columns, arguments_num, row_num, arena);
295
29
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE
Line
Count
Source
293
55
             Arena& arena) const override {
294
55
        this->data(place).add(columns, arguments_num, row_num, arena);
295
55
    }
296
297
    void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs,
298
759
               Arena& arena) const override {
299
759
        this->data(place).merge(this->data(rhs), arena);
300
759
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
298
470
               Arena& arena) const override {
299
470
        this->data(place).merge(this->data(rhs), arena);
300
470
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
298
66
               Arena& arena) const override {
299
66
        this->data(place).merge(this->data(rhs), arena);
300
66
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
298
208
               Arena& arena) const override {
299
208
        this->data(place).merge(this->data(rhs), arena);
300
208
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE5mergeEPcPKcRNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE5mergeEPcPKcRNS_5ArenaE
Line
Count
Source
298
15
               Arena& arena) const override {
299
15
        this->data(place).merge(this->data(rhs), arena);
300
15
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE5mergeEPcPKcRNS_5ArenaE
301
302
883
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
303
883
        this->data(place).serialize(buf);
304
883
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
302
548
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
303
548
        this->data(place).serialize(buf);
304
548
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
302
66
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
303
66
        this->data(place).serialize(buf);
304
66
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
302
254
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
303
254
        this->data(place).serialize(buf);
304
254
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE9serializeEPKcRNS_14BufferWritableE
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE9serializeEPKcRNS_14BufferWritableE
Line
Count
Source
302
15
    void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override {
303
15
        this->data(place).serialize(buf);
304
15
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE9serializeEPKcRNS_14BufferWritableE
305
306
    void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf,
307
758
                     Arena& arena) const override {
308
758
        this->data(place).deserialize(buf, arena);
309
758
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
307
470
                     Arena& arena) const override {
308
470
        this->data(place).deserialize(buf, arena);
309
470
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
307
66
                     Arena& arena) const override {
308
66
        this->data(place).deserialize(buf, arena);
309
66
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
307
207
                     Arena& arena) const override {
308
207
        this->data(place).deserialize(buf, arena);
309
207
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
Line
Count
Source
307
15
                     Arena& arena) const override {
308
15
        this->data(place).deserialize(buf, arena);
309
15
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE
310
311
654
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
654
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
654
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
654
        ColumnRawPtrs arguments_raw(arguments.size());
316
1.35k
        for (size_t i = 0; i < arguments.size(); ++i) {
317
701
            arguments_raw[i] = arguments[i].get();
318
701
        }
319
320
654
        assert(!arguments.empty());
321
654
        Arena arena;
322
654
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
654
                                            arguments_raw.data(), arena);
324
654
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
654
        this->data(place).clear();
329
654
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
3
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
3
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
3
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
3
        ColumnRawPtrs arguments_raw(arguments.size());
316
6
        for (size_t i = 0; i < arguments.size(); ++i) {
317
3
            arguments_raw[i] = arguments[i].get();
318
3
        }
319
320
3
        assert(!arguments.empty());
321
3
        Arena arena;
322
3
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
3
                                            arguments_raw.data(), arena);
324
3
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
3
        this->data(place).clear();
329
3
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
302
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
302
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
302
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
302
        ColumnRawPtrs arguments_raw(arguments.size());
316
604
        for (size_t i = 0; i < arguments.size(); ++i) {
317
302
            arguments_raw[i] = arguments[i].get();
318
302
        }
319
320
302
        assert(!arguments.empty());
321
302
        Arena arena;
322
302
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
302
                                            arguments_raw.data(), arena);
324
302
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
302
        this->data(place).clear();
329
302
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
75
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
75
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
75
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
75
        ColumnRawPtrs arguments_raw(arguments.size());
316
150
        for (size_t i = 0; i < arguments.size(); ++i) {
317
75
            arguments_raw[i] = arguments[i].get();
318
75
        }
319
320
75
        assert(!arguments.empty());
321
75
        Arena arena;
322
75
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
75
                                            arguments_raw.data(), arena);
324
75
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
75
        this->data(place).clear();
329
75
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
170
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
170
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
170
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
170
        ColumnRawPtrs arguments_raw(arguments.size());
316
340
        for (size_t i = 0; i < arguments.size(); ++i) {
317
170
            arguments_raw[i] = arguments[i].get();
318
170
        }
319
320
170
        assert(!arguments.empty());
321
170
        Arena arena;
322
170
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
170
                                            arguments_raw.data(), arena);
324
170
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
170
        this->data(place).clear();
329
170
    }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
57
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
57
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
57
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
57
        ColumnRawPtrs arguments_raw(arguments.size());
316
114
        for (size_t i = 0; i < arguments.size(); ++i) {
317
57
            arguments_raw[i] = arguments[i].get();
318
57
        }
319
320
57
        assert(!arguments.empty());
321
57
        Arena arena;
322
57
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
57
                                            arguments_raw.data(), arena);
324
57
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
57
        this->data(place).clear();
329
57
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
18
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
18
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
18
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
18
        ColumnRawPtrs arguments_raw(arguments.size());
316
54
        for (size_t i = 0; i < arguments.size(); ++i) {
317
36
            arguments_raw[i] = arguments[i].get();
318
36
        }
319
320
18
        assert(!arguments.empty());
321
18
        Arena arena;
322
18
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
18
                                            arguments_raw.data(), arena);
324
18
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
18
        this->data(place).clear();
329
18
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE18insert_result_intoEPKcRNS_7IColumnE
Line
Count
Source
311
29
    void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override {
312
        // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr.
313
29
        auto* place = const_cast<AggregateDataPtr>(targetplace);
314
29
        auto arguments = this->data(place).get_arguments(this->argument_types);
315
29
        ColumnRawPtrs arguments_raw(arguments.size());
316
87
        for (size_t i = 0; i < arguments.size(); ++i) {
317
58
            arguments_raw[i] = arguments[i].get();
318
58
        }
319
320
29
        assert(!arguments.empty());
321
29
        Arena arena;
322
29
        nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place),
323
29
                                            arguments_raw.data(), arena);
324
29
        nested_func->insert_result_into(get_nested_place(place), to);
325
        // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function.
326
        // but with distinct agg and over() window function together, the result will be inserted into many times with different rows
327
        // so we need to clear the data, thus not to affect the next insert_result_into
328
29
        this->data(place).clear();
329
29
    }
330
331
120
    void reset(AggregateDataPtr place) const override {
332
120
        this->data(place).clear();
333
120
        nested_func->reset(get_nested_place(place));
334
120
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE5resetEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE5resetEPc
Line
Count
Source
331
57
    void reset(AggregateDataPtr place) const override {
332
57
        this->data(place).clear();
333
57
        nested_func->reset(get_nested_place(place));
334
57
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE5resetEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE5resetEPc
Line
Count
Source
331
16
    void reset(AggregateDataPtr place) const override {
332
16
        this->data(place).clear();
333
16
        nested_func->reset(get_nested_place(place));
334
16
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE5resetEPc
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE5resetEPc
Line
Count
Source
331
47
    void reset(AggregateDataPtr place) const override {
332
47
        this->data(place).clear();
333
47
        nested_func->reset(get_nested_place(place));
334
47
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE5resetEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE5resetEPc
335
336
1.47k
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE12size_of_dataEv
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE12size_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE12size_of_dataEv
Line
Count
Source
336
2
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE12size_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE12size_of_dataEv
Line
Count
Source
336
695
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE12size_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE12size_of_dataEv
Line
Count
Source
336
147
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE12size_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE12size_of_dataEv
Line
Count
Source
336
1
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE12size_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE12size_of_dataEv
Line
Count
Source
336
404
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE12size_of_dataEv
Line
Count
Source
336
138
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE12size_of_dataEv
Line
Count
Source
336
39
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE12size_of_dataEv
Line
Count
Source
336
50
    size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); }
337
338
2.00k
    size_t align_of_data() const override { return nested_func->align_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE13align_of_dataEv
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE13align_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE13align_of_dataEv
Line
Count
Source
338
5
    size_t align_of_data() const override { return nested_func->align_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE13align_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE13align_of_dataEv
Line
Count
Source
338
574
    size_t align_of_data() const override { return nested_func->align_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE13align_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE13align_of_dataEv
Line
Count
Source
338
379
    size_t align_of_data() const override { return nested_func->align_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE13align_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE13align_of_dataEv
Line
Count
Source
338
2
    size_t align_of_data() const override { return nested_func->align_of_data(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE13align_of_dataEv
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE13align_of_dataEv
Line
Count
Source
338
925
    size_t align_of_data() const override { return nested_func->align_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE13align_of_dataEv
Line
Count
Source
338
68
    size_t align_of_data() const override { return nested_func->align_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE13align_of_dataEv
Line
Count
Source
338
34
    size_t align_of_data() const override { return nested_func->align_of_data(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE13align_of_dataEv
Line
Count
Source
338
20
    size_t align_of_data() const override { return nested_func->align_of_data(); }
339
340
2.56k
    void create(AggregateDataPtr __restrict place) const override {
341
2.56k
        new (place) Data<stable>;
342
2.56k
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
2.56k
                    this->data(place).~Data<stable>());
344
2.56k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE6createEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE6createEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE6createEPc
Line
Count
Source
340
4
    void create(AggregateDataPtr __restrict place) const override {
341
4
        new (place) Data<stable>;
342
4
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
4
                    this->data(place).~Data<stable>());
344
4
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE6createEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE6createEPc
Line
Count
Source
340
1.35k
    void create(AggregateDataPtr __restrict place) const override {
341
1.35k
        new (place) Data<stable>;
342
1.35k
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
1.35k
                    this->data(place).~Data<stable>());
344
1.35k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE6createEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE6createEPc
Line
Count
Source
340
230
    void create(AggregateDataPtr __restrict place) const override {
341
230
        new (place) Data<stable>;
342
230
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
230
                    this->data(place).~Data<stable>());
344
230
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE6createEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE6createEPc
Line
Count
Source
340
1
    void create(AggregateDataPtr __restrict place) const override {
341
1
        new (place) Data<stable>;
342
1
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
1
                    this->data(place).~Data<stable>());
344
1
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE6createEPc
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE6createEPc
Line
Count
Source
340
647
    void create(AggregateDataPtr __restrict place) const override {
341
647
        new (place) Data<stable>;
342
647
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
647
                    this->data(place).~Data<stable>());
344
647
    }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE6createEPc
Line
Count
Source
340
188
    void create(AggregateDataPtr __restrict place) const override {
341
188
        new (place) Data<stable>;
342
188
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
188
                    this->data(place).~Data<stable>());
344
188
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE6createEPc
Line
Count
Source
340
50
    void create(AggregateDataPtr __restrict place) const override {
341
50
        new (place) Data<stable>;
342
50
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
50
                    this->data(place).~Data<stable>());
344
50
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE6createEPc
Line
Count
Source
340
95
    void create(AggregateDataPtr __restrict place) const override {
341
95
        new (place) Data<stable>;
342
95
        SAFE_CREATE(nested_func->create(get_nested_place(place)),
343
95
                    this->data(place).~Data<stable>());
344
95
    }
345
346
2.57k
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
2.57k
        this->data(place).~Data<stable>();
348
2.57k
        nested_func->destroy(get_nested_place(place));
349
2.57k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE7destroyEPc
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE7destroyEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE7destroyEPc
Line
Count
Source
346
4
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
4
        this->data(place).~Data<stable>();
348
4
        nested_func->destroy(get_nested_place(place));
349
4
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE7destroyEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE7destroyEPc
Line
Count
Source
346
1.35k
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
1.35k
        this->data(place).~Data<stable>();
348
1.35k
        nested_func->destroy(get_nested_place(place));
349
1.35k
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE7destroyEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE7destroyEPc
Line
Count
Source
346
229
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
229
        this->data(place).~Data<stable>();
348
229
        nested_func->destroy(get_nested_place(place));
349
229
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE7destroyEPc
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE7destroyEPc
Line
Count
Source
346
1
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
1
        this->data(place).~Data<stable>();
348
1
        nested_func->destroy(get_nested_place(place));
349
1
    }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE7destroyEPc
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE7destroyEPc
Line
Count
Source
346
646
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
646
        this->data(place).~Data<stable>();
348
646
        nested_func->destroy(get_nested_place(place));
349
646
    }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE7destroyEPc
Line
Count
Source
346
190
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
190
        this->data(place).~Data<stable>();
348
190
        nested_func->destroy(get_nested_place(place));
349
190
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE7destroyEPc
Line
Count
Source
346
50
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
50
        this->data(place).~Data<stable>();
348
50
        nested_func->destroy(get_nested_place(place));
349
50
    }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE7destroyEPc
Line
Count
Source
346
96
    void destroy(AggregateDataPtr __restrict place) const noexcept override {
347
96
        this->data(place).~Data<stable>();
348
96
        nested_func->destroy(get_nested_place(place));
349
96
    }
350
351
142
    String get_name() const override { return nested_func->get_name() + "Distinct"; }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE8get_nameB5cxx11Ev
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE8get_nameB5cxx11Ev
Line
Count
Source
351
48
    String get_name() const override { return nested_func->get_name() + "Distinct"; }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE8get_nameB5cxx11Ev
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE8get_nameB5cxx11Ev
Line
Count
Source
351
31
    String get_name() const override { return nested_func->get_name() + "Distinct"; }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE8get_nameB5cxx11Ev
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE8get_nameB5cxx11Ev
Line
Count
Source
351
63
    String get_name() const override { return nested_func->get_name() + "Distinct"; }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE8get_nameB5cxx11Ev
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE8get_nameB5cxx11Ev
352
353
591
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE15get_return_typeEv
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE15get_return_typeEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE15get_return_typeEv
Line
Count
Source
353
5
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE15get_return_typeEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE15get_return_typeEv
Line
Count
Source
353
243
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE15get_return_typeEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE15get_return_typeEv
Line
Count
Source
353
45
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE15get_return_typeEv
_ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE15get_return_typeEv
Line
Count
Source
353
3
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE15get_return_typeEv
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE15get_return_typeEv
Line
Count
Source
353
177
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
_ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE15get_return_typeEv
Line
Count
Source
353
78
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE15get_return_typeEv
Line
Count
Source
353
23
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
_ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE15get_return_typeEv
Line
Count
Source
353
17
    DataTypePtr get_return_type() const override { return nested_func->get_return_type(); }
354
355
53
    IAggregateFunction* transmit_to_stable() override {
356
53
        return new AggregateFunctionDistinct<Data, true>(nested_func,
357
53
                                                         IAggregateFunction::argument_types);
358
53
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE18transmit_to_stableEv
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE18transmit_to_stableEv
_ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE18transmit_to_stableEv
Line
Count
Source
355
43
    IAggregateFunction* transmit_to_stable() override {
356
43
        return new AggregateFunctionDistinct<Data, true>(nested_func,
357
43
                                                         IAggregateFunction::argument_types);
358
43
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE18transmit_to_stableEv
_ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE18transmit_to_stableEv
Line
Count
Source
355
10
    IAggregateFunction* transmit_to_stable() override {
356
10
        return new AggregateFunctionDistinct<Data, true>(nested_func,
357
10
                                                         IAggregateFunction::argument_types);
358
10
    }
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE18transmit_to_stableEv
359
};
360
361
template <typename T>
362
struct FunctionStableTransfer {
363
    using FunctionStable = T;
364
};
365
366
template <template <bool stable> typename Data>
367
struct FunctionStableTransfer<AggregateFunctionDistinct<Data, false>> {
368
    using FunctionStable = AggregateFunctionDistinct<Data, true>;
369
};
370
371
} // namespace doris