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 | 38 | void clear() { data.clear(); }_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE5clearEv Line | Count | Source | 59 | 2 | void clear() { data.clear(); } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE5clearEv Line | Count | Source | 59 | 2 | void clear() { data.clear(); } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE5clearEv Line | Count | Source | 59 | 2 | void clear() { data.clear(); } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE5clearEv Line | Count | Source | 59 | 30 | void clear() { data.clear(); } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE5clearEv Line | Count | Source | 59 | 2 | void clear() { data.clear(); } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE5clearEv Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE5clearEv Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE5clearEv Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE5clearEv Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE5clearEv |
60 | | |
61 | 32 | void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) { |
62 | 32 | const auto& vec = |
63 | 32 | assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0]) |
64 | 32 | .get_data(); |
65 | 32 | if constexpr (stable) { |
66 | 0 | data.emplace(vec[row_num], data.size()); |
67 | 32 | } else { |
68 | 32 | data.insert(vec[row_num]); |
69 | 32 | } |
70 | 32 | } Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Line | Count | Source | 61 | 32 | void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena&) { | 62 | 32 | const auto& vec = | 63 | 32 | assert_cast<const ColumnVector<T>&, TypeCheckOnRelease::DISABLE>(*columns[0]) | 64 | 32 | .get_data(); | 65 | | if constexpr (stable) { | 66 | | data.emplace(vec[row_num], data.size()); | 67 | 32 | } else { | 68 | 32 | data.insert(vec[row_num]); | 69 | 32 | } | 70 | 32 | } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE |
71 | | |
72 | 20 | void merge(const Self& rhs, Arena&) { |
73 | 20 | DCHECK(!stable); |
74 | 20 | if constexpr (!stable) { |
75 | | // Only an empty destination has a known final size; other sets may overlap. |
76 | 20 | if (data.empty() && !rhs.data.empty()) { |
77 | 5 | data.reserve(rhs.data.size()); |
78 | 5 | } |
79 | 30 | for (const auto& elem : rhs.data) { |
80 | 30 | data.insert(elem); |
81 | 30 | } |
82 | 20 | } |
83 | 20 | } _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE5mergeERKS2_RNS_5ArenaE Line | Count | Source | 72 | 4 | void merge(const Self& rhs, Arena&) { | 73 | 4 | DCHECK(!stable); | 74 | 4 | if constexpr (!stable) { | 75 | | // Only an empty destination has a known final size; other sets may overlap. | 76 | 4 | if (data.empty() && !rhs.data.empty()) { | 77 | 1 | data.reserve(rhs.data.size()); | 78 | 1 | } | 79 | 6 | for (const auto& elem : rhs.data) { | 80 | 6 | data.insert(elem); | 81 | 6 | } | 82 | 4 | } | 83 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE5mergeERKS2_RNS_5ArenaE Line | Count | Source | 72 | 4 | void merge(const Self& rhs, Arena&) { | 73 | 4 | DCHECK(!stable); | 74 | 4 | if constexpr (!stable) { | 75 | | // Only an empty destination has a known final size; other sets may overlap. | 76 | 4 | if (data.empty() && !rhs.data.empty()) { | 77 | 1 | data.reserve(rhs.data.size()); | 78 | 1 | } | 79 | 6 | for (const auto& elem : rhs.data) { | 80 | 6 | data.insert(elem); | 81 | 6 | } | 82 | 4 | } | 83 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE5mergeERKS2_RNS_5ArenaE Line | Count | Source | 72 | 4 | void merge(const Self& rhs, Arena&) { | 73 | 4 | DCHECK(!stable); | 74 | 4 | if constexpr (!stable) { | 75 | | // Only an empty destination has a known final size; other sets may overlap. | 76 | 4 | if (data.empty() && !rhs.data.empty()) { | 77 | 1 | data.reserve(rhs.data.size()); | 78 | 1 | } | 79 | 6 | for (const auto& elem : rhs.data) { | 80 | 6 | data.insert(elem); | 81 | 6 | } | 82 | 4 | } | 83 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE5mergeERKS2_RNS_5ArenaE Line | Count | Source | 72 | 4 | void merge(const Self& rhs, Arena&) { | 73 | 4 | DCHECK(!stable); | 74 | 4 | if constexpr (!stable) { | 75 | | // Only an empty destination has a known final size; other sets may overlap. | 76 | 4 | if (data.empty() && !rhs.data.empty()) { | 77 | 1 | data.reserve(rhs.data.size()); | 78 | 1 | } | 79 | 6 | for (const auto& elem : rhs.data) { | 80 | 6 | data.insert(elem); | 81 | 6 | } | 82 | 4 | } | 83 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE5mergeERKS2_RNS_5ArenaE Line | Count | Source | 72 | 4 | void merge(const Self& rhs, Arena&) { | 73 | 4 | DCHECK(!stable); | 74 | 4 | if constexpr (!stable) { | 75 | | // Only an empty destination has a known final size; other sets may overlap. | 76 | 4 | if (data.empty() && !rhs.data.empty()) { | 77 | 1 | data.reserve(rhs.data.size()); | 78 | 1 | } | 79 | 6 | for (const auto& elem : rhs.data) { | 80 | 6 | data.insert(elem); | 81 | 6 | } | 82 | 4 | } | 83 | 4 | } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE5mergeERKS2_RNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE5mergeERKS2_RNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE5mergeERKS2_RNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE5mergeERKS2_RNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE5mergeERKS2_RNS_5ArenaE |
84 | | |
85 | 22 | void serialize(BufferWritable& buf) const { |
86 | 22 | DCHECK(!stable); |
87 | 22 | if constexpr (!stable) { |
88 | 22 | buf.write_var_uint(data.size()); |
89 | 39 | for (const auto& value : data) { |
90 | 39 | buf.write_binary(value); |
91 | 39 | } |
92 | 22 | } |
93 | 22 | } _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 85 | 2 | void serialize(BufferWritable& buf) const { | 86 | 2 | DCHECK(!stable); | 87 | 2 | if constexpr (!stable) { | 88 | 2 | buf.write_var_uint(data.size()); | 89 | 3 | for (const auto& value : data) { | 90 | 3 | buf.write_binary(value); | 91 | 3 | } | 92 | 2 | } | 93 | 2 | } |
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 85 | 2 | void serialize(BufferWritable& buf) const { | 86 | 2 | DCHECK(!stable); | 87 | 2 | if constexpr (!stable) { | 88 | 2 | buf.write_var_uint(data.size()); | 89 | 3 | for (const auto& value : data) { | 90 | 3 | buf.write_binary(value); | 91 | 3 | } | 92 | 2 | } | 93 | 2 | } |
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 85 | 2 | void serialize(BufferWritable& buf) const { | 86 | 2 | DCHECK(!stable); | 87 | 2 | if constexpr (!stable) { | 88 | 2 | buf.write_var_uint(data.size()); | 89 | 3 | for (const auto& value : data) { | 90 | 3 | buf.write_binary(value); | 91 | 3 | } | 92 | 2 | } | 93 | 2 | } |
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 85 | 14 | void serialize(BufferWritable& buf) const { | 86 | 14 | DCHECK(!stable); | 87 | 14 | if constexpr (!stable) { | 88 | 14 | buf.write_var_uint(data.size()); | 89 | 27 | for (const auto& value : data) { | 90 | 27 | buf.write_binary(value); | 91 | 27 | } | 92 | 14 | } | 93 | 14 | } |
_ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 85 | 2 | void serialize(BufferWritable& buf) const { | 86 | 2 | DCHECK(!stable); | 87 | 2 | if constexpr (!stable) { | 88 | 2 | buf.write_var_uint(data.size()); | 89 | 3 | for (const auto& value : data) { | 90 | 3 | buf.write_binary(value); | 91 | 3 | } | 92 | 2 | } | 93 | 2 | } |
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE9serializeERNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE9serializeERNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE9serializeERNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE9serializeERNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE9serializeERNS_14BufferWritableE |
94 | | |
95 | 40 | void deserialize(BufferReadable& buf, Arena&) { |
96 | 40 | DCHECK(!stable); |
97 | 40 | if constexpr (!stable) { |
98 | 40 | uint64_t new_size = 0; |
99 | 40 | buf.read_var_uint(new_size); |
100 | | // Avoid reserving an upper bound when merging into a nonempty set. |
101 | 40 | if (data.empty() && new_size != 0) { |
102 | 13 | data.reserve(new_size); |
103 | 13 | } |
104 | 40 | typename PrimitiveTypeTraits<T>::CppType x; |
105 | 125 | for (size_t i = 0; i < new_size; ++i) { |
106 | 85 | buf.read_binary(x); |
107 | 85 | data.insert(x); |
108 | 85 | } |
109 | 40 | } |
110 | 40 | } _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 95 | 4 | void deserialize(BufferReadable& buf, Arena&) { | 96 | 4 | DCHECK(!stable); | 97 | 4 | if constexpr (!stable) { | 98 | 4 | uint64_t new_size = 0; | 99 | 4 | buf.read_var_uint(new_size); | 100 | | // Avoid reserving an upper bound when merging into a nonempty set. | 101 | 4 | if (data.empty() && new_size != 0) { | 102 | 1 | data.reserve(new_size); | 103 | 1 | } | 104 | 4 | typename PrimitiveTypeTraits<T>::CppType x; | 105 | 13 | for (size_t i = 0; i < new_size; ++i) { | 106 | 9 | buf.read_binary(x); | 107 | 9 | data.insert(x); | 108 | 9 | } | 109 | 4 | } | 110 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 95 | 4 | void deserialize(BufferReadable& buf, Arena&) { | 96 | 4 | DCHECK(!stable); | 97 | 4 | if constexpr (!stable) { | 98 | 4 | uint64_t new_size = 0; | 99 | 4 | buf.read_var_uint(new_size); | 100 | | // Avoid reserving an upper bound when merging into a nonempty set. | 101 | 4 | if (data.empty() && new_size != 0) { | 102 | 1 | data.reserve(new_size); | 103 | 1 | } | 104 | 4 | typename PrimitiveTypeTraits<T>::CppType x; | 105 | 13 | for (size_t i = 0; i < new_size; ++i) { | 106 | 9 | buf.read_binary(x); | 107 | 9 | data.insert(x); | 108 | 9 | } | 109 | 4 | } | 110 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 95 | 4 | void deserialize(BufferReadable& buf, Arena&) { | 96 | 4 | DCHECK(!stable); | 97 | 4 | if constexpr (!stable) { | 98 | 4 | uint64_t new_size = 0; | 99 | 4 | buf.read_var_uint(new_size); | 100 | | // Avoid reserving an upper bound when merging into a nonempty set. | 101 | 4 | if (data.empty() && new_size != 0) { | 102 | 1 | data.reserve(new_size); | 103 | 1 | } | 104 | 4 | typename PrimitiveTypeTraits<T>::CppType x; | 105 | 13 | for (size_t i = 0; i < new_size; ++i) { | 106 | 9 | buf.read_binary(x); | 107 | 9 | data.insert(x); | 108 | 9 | } | 109 | 4 | } | 110 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 95 | 24 | void deserialize(BufferReadable& buf, Arena&) { | 96 | 24 | DCHECK(!stable); | 97 | 24 | if constexpr (!stable) { | 98 | 24 | uint64_t new_size = 0; | 99 | 24 | buf.read_var_uint(new_size); | 100 | | // Avoid reserving an upper bound when merging into a nonempty set. | 101 | 24 | if (data.empty() && new_size != 0) { | 102 | 9 | data.reserve(new_size); | 103 | 9 | } | 104 | 24 | typename PrimitiveTypeTraits<T>::CppType x; | 105 | 73 | for (size_t i = 0; i < new_size; ++i) { | 106 | 49 | buf.read_binary(x); | 107 | 49 | data.insert(x); | 108 | 49 | } | 109 | 24 | } | 110 | 24 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 95 | 4 | void deserialize(BufferReadable& buf, Arena&) { | 96 | 4 | DCHECK(!stable); | 97 | 4 | if constexpr (!stable) { | 98 | 4 | uint64_t new_size = 0; | 99 | 4 | buf.read_var_uint(new_size); | 100 | | // Avoid reserving an upper bound when merging into a nonempty set. | 101 | 4 | if (data.empty() && new_size != 0) { | 102 | 1 | data.reserve(new_size); | 103 | 1 | } | 104 | 4 | typename PrimitiveTypeTraits<T>::CppType x; | 105 | 13 | for (size_t i = 0; i < new_size; ++i) { | 106 | 9 | buf.read_binary(x); | 107 | 9 | data.insert(x); | 108 | 9 | } | 109 | 4 | } | 110 | 4 | } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE |
111 | | |
112 | 40 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { |
113 | | // Numeric keys can be inserted directly without building a temporary hash set. |
114 | 40 | deserialize(buf, arena); |
115 | 40 | } _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 112 | 4 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { | 113 | | // Numeric keys can be inserted directly without building a temporary hash set. | 114 | 4 | deserialize(buf, arena); | 115 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 112 | 4 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { | 113 | | // Numeric keys can be inserted directly without building a temporary hash set. | 114 | 4 | deserialize(buf, arena); | 115 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 112 | 4 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { | 113 | | // Numeric keys can be inserted directly without building a temporary hash set. | 114 | 4 | deserialize(buf, arena); | 115 | 4 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 112 | 24 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { | 113 | | // Numeric keys can be inserted directly without building a temporary hash set. | 114 | 24 | deserialize(buf, arena); | 115 | 24 | } |
_ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 112 | 4 | void deserialize_and_merge(Self& /*rhs*/, BufferReadable& buf, Arena& arena) { | 113 | | // Numeric keys can be inserted directly without building a temporary hash set. | 114 | 4 | deserialize(buf, arena); | 115 | 4 | } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE21deserialize_and_mergeERS2_RNS_14BufferReadableERNS_5ArenaE |
116 | | |
117 | 10 | MutableColumns get_arguments(const DataTypes& argument_types) const { |
118 | 10 | MutableColumns argument_columns; |
119 | 10 | argument_columns.emplace_back(argument_types[0]->create_column()); |
120 | | |
121 | 10 | if constexpr (stable) { |
122 | 0 | argument_columns[0]->resize(data.size()); |
123 | | // argument_columns[0] is a mutable column created using create_column. |
124 | | // since get_raw_data returns a StringRef, const_cast is required here. |
125 | 0 | auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>( |
126 | 0 | argument_columns[0]->get_raw_data().data); |
127 | 0 | for (auto it : data) { |
128 | 0 | ptr[it.second] = it.first; |
129 | 0 | } |
130 | 10 | } else { |
131 | 28 | for (const auto& elem : data) { |
132 | 28 | argument_columns[0]->insert(Field::create_field<T>(elem)); |
133 | 28 | } |
134 | 10 | } |
135 | | |
136 | 10 | return argument_columns; |
137 | 10 | } Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE3ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE4ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE5ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Line | Count | Source | 117 | 10 | MutableColumns get_arguments(const DataTypes& argument_types) const { | 118 | 10 | MutableColumns argument_columns; | 119 | 10 | argument_columns.emplace_back(argument_types[0]->create_column()); | 120 | | | 121 | | if constexpr (stable) { | 122 | | argument_columns[0]->resize(data.size()); | 123 | | // argument_columns[0] is a mutable column created using create_column. | 124 | | // since get_raw_data returns a StringRef, const_cast is required here. | 125 | | auto ptr = (typename PrimitiveTypeTraits<T>::CppType*)const_cast<char*>( | 126 | | argument_columns[0]->get_raw_data().data); | 127 | | for (auto it : data) { | 128 | | ptr[it.second] = it.first; | 129 | | } | 130 | 10 | } else { | 131 | 28 | for (const auto& elem : data) { | 132 | 28 | argument_columns[0]->insert(Field::create_field<T>(elem)); | 133 | 28 | } | 134 | 10 | } | 135 | | | 136 | 10 | return argument_columns; | 137 | 10 | } |
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE6ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleNumericDataILNS_13PrimitiveTypeE7ELb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS7_EE |
138 | | }; |
139 | | |
140 | | template <bool stable> |
141 | | struct AggregateFunctionDistinctGenericData { |
142 | | /// When creating, the hash table must be small. |
143 | | using Container = std::conditional_t<stable, doris::flat_hash_map<StringRef, uint32_t>, |
144 | | doris::flat_hash_set<StringRef, StringRefHash>>; |
145 | | using Self = AggregateFunctionDistinctGenericData; |
146 | | Container data; |
147 | | |
148 | 2 | void clear() { data.clear(); }_ZN5doris36AggregateFunctionDistinctGenericDataILb0EE5clearEv Line | Count | Source | 148 | 2 | void clear() { data.clear(); } |
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE5clearEv |
149 | | |
150 | 2 | void merge(const Self& rhs, Arena& arena) { |
151 | 2 | DCHECK(!stable); |
152 | 2 | if constexpr (!stable) { |
153 | 4 | for (const auto& elem : rhs.data) { |
154 | 4 | StringRef key = elem; |
155 | 4 | key.data = arena.insert(key.data, key.size); |
156 | 4 | data.emplace(key); |
157 | 4 | } |
158 | 2 | } |
159 | 2 | } _ZN5doris36AggregateFunctionDistinctGenericDataILb0EE5mergeERKS1_RNS_5ArenaE Line | Count | Source | 150 | 2 | void merge(const Self& rhs, Arena& arena) { | 151 | 2 | DCHECK(!stable); | 152 | 2 | if constexpr (!stable) { | 153 | 4 | for (const auto& elem : rhs.data) { | 154 | 4 | StringRef key = elem; | 155 | 4 | key.data = arena.insert(key.data, key.size); | 156 | 4 | data.emplace(key); | 157 | 4 | } | 158 | 2 | } | 159 | 2 | } |
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE5mergeERKS1_RNS_5ArenaE |
160 | | |
161 | 2 | void serialize(BufferWritable& buf) const { |
162 | 2 | DCHECK(!stable); |
163 | 2 | if constexpr (!stable) { |
164 | 2 | buf.write_var_uint(data.size()); |
165 | 4 | for (const auto& elem : data) { |
166 | 4 | buf.write_binary(elem); |
167 | 4 | } |
168 | 2 | } |
169 | 2 | } _ZNK5doris36AggregateFunctionDistinctGenericDataILb0EE9serializeERNS_14BufferWritableE Line | Count | Source | 161 | 2 | void serialize(BufferWritable& buf) const { | 162 | 2 | DCHECK(!stable); | 163 | 2 | if constexpr (!stable) { | 164 | 2 | buf.write_var_uint(data.size()); | 165 | 4 | for (const auto& elem : data) { | 166 | 4 | buf.write_binary(elem); | 167 | 4 | } | 168 | 2 | } | 169 | 2 | } |
Unexecuted instantiation: _ZNK5doris36AggregateFunctionDistinctGenericDataILb1EE9serializeERNS_14BufferWritableE |
170 | | |
171 | 2 | void deserialize_and_merge(Self& rhs, BufferReadable& buf, Arena& arena) { |
172 | | // deserialize() borrows StringRefs from buf; merge() copies them into the arena. |
173 | 2 | rhs.deserialize(buf, arena); |
174 | 2 | merge(rhs, arena); |
175 | 2 | } _ZN5doris36AggregateFunctionDistinctGenericDataILb0EE21deserialize_and_mergeERS1_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 171 | 2 | void deserialize_and_merge(Self& rhs, BufferReadable& buf, Arena& arena) { | 172 | | // deserialize() borrows StringRefs from buf; merge() copies them into the arena. | 173 | 2 | rhs.deserialize(buf, arena); | 174 | 2 | merge(rhs, arena); | 175 | 2 | } |
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE21deserialize_and_mergeERS1_RNS_14BufferReadableERNS_5ArenaE |
176 | | |
177 | 2 | void deserialize(BufferReadable& buf, Arena& arena) { |
178 | 2 | DCHECK(!stable); |
179 | 2 | if constexpr (!stable) { |
180 | 2 | UInt64 size; |
181 | 2 | buf.read_var_uint(size); |
182 | | |
183 | 2 | StringRef ref; |
184 | 6 | for (size_t i = 0; i < size; ++i) { |
185 | 4 | buf.read_binary(ref); |
186 | 4 | data.insert(ref); |
187 | 4 | } |
188 | 2 | } |
189 | 2 | } _ZN5doris36AggregateFunctionDistinctGenericDataILb0EE11deserializeERNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 177 | 2 | void deserialize(BufferReadable& buf, Arena& arena) { | 178 | 2 | DCHECK(!stable); | 179 | 2 | if constexpr (!stable) { | 180 | 2 | UInt64 size; | 181 | 2 | buf.read_var_uint(size); | 182 | | | 183 | 2 | StringRef ref; | 184 | 6 | for (size_t i = 0; i < size; ++i) { | 185 | 4 | buf.read_binary(ref); | 186 | 4 | data.insert(ref); | 187 | 4 | } | 188 | 2 | } | 189 | 2 | } |
Unexecuted instantiation: _ZN5doris36AggregateFunctionDistinctGenericDataILb1EE11deserializeERNS_14BufferReadableERNS_5ArenaE |
190 | | }; |
191 | | |
192 | | template <bool stable> |
193 | | struct AggregateFunctionDistinctSingleGenericData |
194 | | : public AggregateFunctionDistinctGenericData<stable> { |
195 | | using Base = AggregateFunctionDistinctGenericData<stable>; |
196 | | using Base::data; |
197 | 6 | void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena& arena) { |
198 | 6 | auto key = columns[0]->get_data_at(row_num); |
199 | 6 | key.data = arena.insert(key.data, key.size); |
200 | | |
201 | 6 | if constexpr (stable) { |
202 | 0 | data.emplace(key, data.size()); |
203 | 6 | } else { |
204 | 6 | data.insert(key); |
205 | 6 | } |
206 | 6 | } _ZN5doris42AggregateFunctionDistinctSingleGenericDataILb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Line | Count | Source | 197 | 6 | void add(const IColumn** columns, size_t /* columns_num */, size_t row_num, Arena& arena) { | 198 | 6 | auto key = columns[0]->get_data_at(row_num); | 199 | 6 | key.data = arena.insert(key.data, key.size); | 200 | | | 201 | | if constexpr (stable) { | 202 | | data.emplace(key, data.size()); | 203 | 6 | } else { | 204 | 6 | data.insert(key); | 205 | 6 | } | 206 | 6 | } |
Unexecuted instantiation: _ZN5doris42AggregateFunctionDistinctSingleGenericDataILb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE |
207 | | |
208 | 2 | MutableColumns get_arguments(const DataTypes& argument_types) const { |
209 | 2 | MutableColumns argument_columns; |
210 | 2 | argument_columns.emplace_back(argument_types[0]->create_column()); |
211 | 2 | if constexpr (stable) { |
212 | 0 | std::vector<StringRef> tmp(data.size()); |
213 | 0 | for (auto it : data) { |
214 | 0 | tmp[it.second] = it.first; |
215 | 0 | } |
216 | 0 | for (int i = 0; i < data.size(); i++) { |
217 | 0 | argument_columns[0]->insert_data(tmp[i].data, tmp[i].size); |
218 | 0 | } |
219 | 2 | } else { |
220 | 4 | for (const auto& elem : data) { |
221 | 4 | argument_columns[0]->insert_data(elem.data, elem.size); |
222 | 4 | } |
223 | 2 | } |
224 | | |
225 | 2 | return argument_columns; |
226 | 2 | } _ZNK5doris42AggregateFunctionDistinctSingleGenericDataILb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE Line | Count | Source | 208 | 2 | MutableColumns get_arguments(const DataTypes& argument_types) const { | 209 | 2 | MutableColumns argument_columns; | 210 | 2 | argument_columns.emplace_back(argument_types[0]->create_column()); | 211 | | if constexpr (stable) { | 212 | | std::vector<StringRef> tmp(data.size()); | 213 | | for (auto it : data) { | 214 | | tmp[it.second] = it.first; | 215 | | } | 216 | | for (int i = 0; i < data.size(); i++) { | 217 | | argument_columns[0]->insert_data(tmp[i].data, tmp[i].size); | 218 | | } | 219 | 2 | } else { | 220 | 4 | for (const auto& elem : data) { | 221 | 4 | argument_columns[0]->insert_data(elem.data, elem.size); | 222 | 4 | } | 223 | 2 | } | 224 | | | 225 | 2 | return argument_columns; | 226 | 2 | } |
Unexecuted instantiation: _ZNK5doris42AggregateFunctionDistinctSingleGenericDataILb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE |
227 | | }; |
228 | | |
229 | | template <bool stable> |
230 | | struct AggregateFunctionDistinctMultipleGenericData |
231 | | : public AggregateFunctionDistinctGenericData<stable> { |
232 | | using Base = AggregateFunctionDistinctGenericData<stable>; |
233 | | using Base::data; |
234 | 0 | void add(const IColumn** columns, size_t columns_num, size_t row_num, Arena& arena) { |
235 | 0 | const char* begin = nullptr; |
236 | 0 | StringRef key(begin, 0); |
237 | 0 | for (size_t i = 0; i < columns_num; ++i) { |
238 | 0 | auto cur_ref = columns[i]->serialize_value_into_arena(row_num, arena, begin); |
239 | 0 | key.data = cur_ref.data - key.size; |
240 | 0 | key.size += cur_ref.size; |
241 | 0 | } |
242 | |
|
243 | 0 | if constexpr (stable) { |
244 | 0 | data.emplace(key, data.size()); |
245 | 0 | } else { |
246 | 0 | data.emplace(key); |
247 | 0 | } |
248 | 0 | } Unexecuted instantiation: _ZN5doris44AggregateFunctionDistinctMultipleGenericDataILb0EE3addEPPKNS_7IColumnEmmRNS_5ArenaE Unexecuted instantiation: _ZN5doris44AggregateFunctionDistinctMultipleGenericDataILb1EE3addEPPKNS_7IColumnEmmRNS_5ArenaE |
249 | | |
250 | 0 | MutableColumns get_arguments(const DataTypes& argument_types) const { |
251 | 0 | MutableColumns argument_columns(argument_types.size()); |
252 | 0 | for (size_t i = 0; i < argument_types.size(); ++i) { |
253 | 0 | argument_columns[i] = argument_types[i]->create_column(); |
254 | 0 | } |
255 | |
|
256 | 0 | if constexpr (stable) { |
257 | 0 | std::vector<StringRef> tmp(data.size()); |
258 | 0 | for (auto it : data) { |
259 | 0 | tmp[it.second] = it.first; |
260 | 0 | } |
261 | 0 | for (int i = 0; i < data.size(); i++) { |
262 | 0 | const char* begin = tmp[i].data; |
263 | 0 | for (auto& column : argument_columns) { |
264 | 0 | begin = column->deserialize_and_insert_from_arena(begin); |
265 | 0 | } |
266 | 0 | } |
267 | 0 | } else { |
268 | 0 | for (const auto& elem : data) { |
269 | 0 | const char* begin = elem.data; |
270 | 0 | for (auto& column : argument_columns) { |
271 | 0 | begin = column->deserialize_and_insert_from_arena(begin); |
272 | 0 | } |
273 | 0 | } |
274 | 0 | } |
275 | |
|
276 | 0 | return argument_columns; |
277 | 0 | } Unexecuted instantiation: _ZNK5doris44AggregateFunctionDistinctMultipleGenericDataILb0EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE Unexecuted instantiation: _ZNK5doris44AggregateFunctionDistinctMultipleGenericDataILb1EE13get_argumentsERKSt6vectorISt10shared_ptrIKNS_9IDataTypeEESaIS6_EE |
278 | | }; |
279 | | |
280 | | /** Adaptor for aggregate functions. |
281 | | * Adding -Distinct suffix to aggregate function |
282 | | **/ |
283 | | template <template <bool stable> typename Data, bool stable = false> |
284 | | class AggregateFunctionDistinct final |
285 | | : public IAggregateFunctionDataHelper<Data<stable>, |
286 | | AggregateFunctionDistinct<Data, stable>>, |
287 | | VarargsExpression, |
288 | | NullableAggregateFunction { |
289 | | private: |
290 | | size_t prefix_size; |
291 | | AggregateFunctionPtr nested_func; |
292 | | size_t arguments_num; |
293 | | |
294 | 132 | AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept { |
295 | 132 | return place + prefix_size; |
296 | 132 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE16get_nested_placeEPc _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE16get_nested_placeEPc Line | Count | Source | 294 | 116 | AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept { | 295 | 116 | return place + prefix_size; | 296 | 116 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE16get_nested_placeEPc _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE16get_nested_placeEPc Line | Count | Source | 294 | 16 | AggregateDataPtr get_nested_place(AggregateDataPtr __restrict place) const noexcept { | 295 | 16 | return place + prefix_size; | 296 | 16 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE16get_nested_placeEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE16get_nested_placeEPc |
297 | | |
298 | | ConstAggregateDataPtr get_nested_place(ConstAggregateDataPtr __restrict place) const noexcept { |
299 | | return place + prefix_size; |
300 | | } |
301 | | |
302 | | public: |
303 | | AggregateFunctionDistinct(AggregateFunctionPtr nested_func_, const DataTypes& arguments) |
304 | 8 | : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>( |
305 | 8 | arguments), |
306 | 8 | nested_func(std::move(nested_func_)), |
307 | 8 | arguments_num(arguments.size()) { |
308 | 8 | size_t nested_size = nested_func->align_of_data(); |
309 | 8 | CHECK_GT(nested_size, 0); |
310 | 8 | prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size; |
311 | 8 | } Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Line | Count | Source | 304 | 6 | : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>( | 305 | 6 | arguments), | 306 | 6 | nested_func(std::move(nested_func_)), | 307 | 6 | arguments_num(arguments.size()) { | 308 | 6 | size_t nested_size = nested_func->align_of_data(); | 309 | | CHECK_GT(nested_size, 0); | 310 | 6 | prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size; | 311 | 6 | } |
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS6_IKNS_9IDataTypeEESaISC_EE _ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE Line | Count | Source | 304 | 2 | : IAggregateFunctionDataHelper<Data<stable>, AggregateFunctionDistinct<Data, stable>>( | 305 | 2 | arguments), | 306 | 2 | nested_func(std::move(nested_func_)), | 307 | 2 | arguments_num(arguments.size()) { | 308 | 2 | size_t nested_size = nested_func->align_of_data(); | 309 | | CHECK_GT(nested_size, 0); | 310 | 2 | prefix_size = (sizeof(Data<stable>) + nested_size - 1) / nested_size * nested_size; | 311 | 2 | } |
Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EEC2ESt10shared_ptrINS_18IAggregateFunctionEERKSt6vectorIS3_IKNS_9IDataTypeEESaIS9_EE |
312 | | |
313 | | void add(AggregateDataPtr __restrict place, const IColumn** columns, ssize_t row_num, |
314 | 38 | Arena& arena) const override { |
315 | 38 | this->data(place).add(columns, arguments_num, row_num, arena); |
316 | 38 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Line | Count | Source | 314 | 32 | Arena& arena) const override { | 315 | 32 | this->data(place).add(columns, arguments_num, row_num, arena); | 316 | 32 | } |
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 | 314 | 6 | Arena& arena) const override { | 315 | 6 | this->data(place).add(columns, arguments_num, row_num, arena); | 316 | 6 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE3addEPcPPKNS_7IColumnElRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE3addEPcPPKNS_7IColumnElRNS_5ArenaE |
317 | | |
318 | | void merge(AggregateDataPtr __restrict place, ConstAggregateDataPtr rhs, |
319 | 0 | Arena& arena) const override { |
320 | 0 | this->data(place).merge(this->data(rhs), arena); |
321 | 0 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE5mergeEPcPKcRNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE5mergeEPcPKcRNS_5ArenaE |
322 | | |
323 | 14 | void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override { |
324 | 14 | this->data(place).serialize(buf); |
325 | 14 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE Line | Count | Source | 323 | 12 | void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override { | 324 | 12 | this->data(place).serialize(buf); | 325 | 12 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE9serializeEPKcRNS_14BufferWritableE _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE9serializeEPKcRNS_14BufferWritableE Line | Count | Source | 323 | 2 | void serialize(ConstAggregateDataPtr __restrict place, BufferWritable& buf) const override { | 324 | 2 | this->data(place).serialize(buf); | 325 | 2 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE9serializeEPKcRNS_14BufferWritableE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE9serializeEPKcRNS_14BufferWritableE |
326 | | |
327 | | void deserialize(AggregateDataPtr __restrict place, BufferReadable& buf, |
328 | 0 | Arena& arena) const override { |
329 | 0 | this->data(place).deserialize(buf, arena); |
330 | 0 | } 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 Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE11deserializeEPcRNS_14BufferReadableERNS_5ArenaE |
331 | | |
332 | | void deserialize_and_merge(AggregateDataPtr __restrict place, AggregateDataPtr __restrict rhs, |
333 | 22 | BufferReadable& buf, Arena& arena) const override { |
334 | 22 | this->data(place).deserialize_and_merge(this->data(rhs), buf, arena); |
335 | 22 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 333 | 20 | BufferReadable& buf, Arena& arena) const override { | 334 | 20 | this->data(place).deserialize_and_merge(this->data(rhs), buf, arena); | 335 | 20 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE21deserialize_and_mergeEPcS6_RNS_14BufferReadableERNS_5ArenaE _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE21deserialize_and_mergeEPcS3_RNS_14BufferReadableERNS_5ArenaE Line | Count | Source | 333 | 2 | BufferReadable& buf, Arena& arena) const override { | 334 | 2 | this->data(place).deserialize_and_merge(this->data(rhs), buf, arena); | 335 | 2 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE21deserialize_and_mergeEPcS3_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE21deserialize_and_mergeEPcS3_RNS_14BufferReadableERNS_5ArenaE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE21deserialize_and_mergeEPcS3_RNS_14BufferReadableERNS_5ArenaE |
336 | | |
337 | 12 | void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override { |
338 | | // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr. |
339 | 12 | auto* place = const_cast<AggregateDataPtr>(targetplace); |
340 | 12 | auto arguments = this->data(place).get_arguments(this->argument_types); |
341 | 12 | ColumnRawPtrs arguments_raw(arguments.size()); |
342 | 24 | for (size_t i = 0; i < arguments.size(); ++i) { |
343 | 12 | arguments_raw[i] = arguments[i].get(); |
344 | 12 | } |
345 | | |
346 | 12 | assert(!arguments.empty()); |
347 | 12 | Arena arena; |
348 | 12 | nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place), |
349 | 12 | arguments_raw.data(), arena); |
350 | 12 | nested_func->insert_result_into(get_nested_place(place), to); |
351 | | // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function. |
352 | | // but with distinct agg and over() window function together, the result will be inserted into many times with different rows |
353 | | // so we need to clear the data, thus not to affect the next insert_result_into |
354 | 12 | this->data(place).clear(); |
355 | 12 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE18insert_result_intoEPKcRNS_7IColumnE _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE18insert_result_intoEPKcRNS_7IColumnE Line | Count | Source | 337 | 10 | void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override { | 338 | | // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr. | 339 | 10 | auto* place = const_cast<AggregateDataPtr>(targetplace); | 340 | 10 | auto arguments = this->data(place).get_arguments(this->argument_types); | 341 | 10 | ColumnRawPtrs arguments_raw(arguments.size()); | 342 | 20 | for (size_t i = 0; i < arguments.size(); ++i) { | 343 | 10 | arguments_raw[i] = arguments[i].get(); | 344 | 10 | } | 345 | | | 346 | 10 | assert(!arguments.empty()); | 347 | 10 | Arena arena; | 348 | 10 | nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place), | 349 | 10 | arguments_raw.data(), arena); | 350 | 10 | nested_func->insert_result_into(get_nested_place(place), to); | 351 | | // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function. | 352 | | // but with distinct agg and over() window function together, the result will be inserted into many times with different rows | 353 | | // so we need to clear the data, thus not to affect the next insert_result_into | 354 | 10 | this->data(place).clear(); | 355 | 10 | } |
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 | 337 | 2 | void insert_result_into(ConstAggregateDataPtr targetplace, IColumn& to) const override { | 338 | | // place is essentially an AggregateDataPtr, passed as a ConstAggregateDataPtr. | 339 | 2 | auto* place = const_cast<AggregateDataPtr>(targetplace); | 340 | 2 | auto arguments = this->data(place).get_arguments(this->argument_types); | 341 | 2 | ColumnRawPtrs arguments_raw(arguments.size()); | 342 | 4 | for (size_t i = 0; i < arguments.size(); ++i) { | 343 | 2 | arguments_raw[i] = arguments[i].get(); | 344 | 2 | } | 345 | | | 346 | 2 | assert(!arguments.empty()); | 347 | 2 | Arena arena; | 348 | 2 | nested_func->add_batch_single_place(arguments[0]->size(), get_nested_place(place), | 349 | 2 | arguments_raw.data(), arena); | 350 | 2 | nested_func->insert_result_into(get_nested_place(place), to); | 351 | | // for distinct agg function, the real calculate is add_batch_single_place at last step of insert_result_into function. | 352 | | // but with distinct agg and over() window function together, the result will be inserted into many times with different rows | 353 | | // so we need to clear the data, thus not to affect the next insert_result_into | 354 | 2 | this->data(place).clear(); | 355 | 2 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE18insert_result_intoEPKcRNS_7IColumnE Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE18insert_result_intoEPKcRNS_7IColumnE |
356 | | |
357 | 18 | void reset(AggregateDataPtr place) const override { |
358 | 18 | this->data(place).clear(); |
359 | 18 | nested_func->reset(get_nested_place(place)); |
360 | 18 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE5resetEPc _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE5resetEPc Line | Count | Source | 357 | 18 | void reset(AggregateDataPtr place) const override { | 358 | 18 | this->data(place).clear(); | 359 | 18 | nested_func->reset(get_nested_place(place)); | 360 | 18 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE5resetEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE5resetEPc |
361 | | |
362 | 45 | 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 Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE12size_of_dataEv _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE12size_of_dataEv Line | Count | Source | 362 | 39 | size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE12size_of_dataEv _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE12size_of_dataEv Line | Count | Source | 362 | 6 | size_t size_of_data() const override { return prefix_size + nested_func->size_of_data(); } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE12size_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE12size_of_dataEv |
363 | | |
364 | 8 | 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 Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE13align_of_dataEv _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE13align_of_dataEv Line | Count | Source | 364 | 8 | size_t align_of_data() const override { return nested_func->align_of_data(); } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE13align_of_dataEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE13align_of_dataEv |
365 | | |
366 | 45 | void create(AggregateDataPtr __restrict place) const override { |
367 | 45 | new (place) Data<stable>; |
368 | 45 | SAFE_CREATE(nested_func->create(get_nested_place(place)), |
369 | 45 | this->data(place).~Data<stable>()); |
370 | 45 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE6createEPc _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE6createEPc Line | Count | Source | 366 | 39 | void create(AggregateDataPtr __restrict place) const override { | 367 | 39 | new (place) Data<stable>; | 368 | 39 | SAFE_CREATE(nested_func->create(get_nested_place(place)), | 369 | 39 | this->data(place).~Data<stable>()); | 370 | 39 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE6createEPc _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE6createEPc Line | Count | Source | 366 | 6 | void create(AggregateDataPtr __restrict place) const override { | 367 | 6 | new (place) Data<stable>; | 368 | 6 | SAFE_CREATE(nested_func->create(get_nested_place(place)), | 369 | 6 | this->data(place).~Data<stable>()); | 370 | 6 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE6createEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE6createEPc |
371 | | |
372 | 45 | void destroy(AggregateDataPtr __restrict place) const noexcept override { |
373 | 45 | this->data(place).~Data<stable>(); |
374 | 45 | nested_func->destroy(get_nested_place(place)); |
375 | 45 | } Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb0EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE3EE6OutputELb1EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE7destroyEPc _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE7destroyEPc Line | Count | Source | 372 | 39 | void destroy(AggregateDataPtr __restrict place) const noexcept override { | 373 | 39 | this->data(place).~Data<stable>(); | 374 | 39 | nested_func->destroy(get_nested_place(place)); | 375 | 39 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE7destroyEPc _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE7destroyEPc Line | Count | Source | 372 | 6 | void destroy(AggregateDataPtr __restrict place) const noexcept override { | 373 | 6 | this->data(place).~Data<stable>(); | 374 | 6 | nested_func->destroy(get_nested_place(place)); | 375 | 6 | } |
Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE7destroyEPc Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE7destroyEPc |
376 | | |
377 | 0 | 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 Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE8get_nameB5cxx11Ev Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE8get_nameB5cxx11Ev |
378 | | |
379 | 0 | 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 Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE4EE6OutputELb1EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE5EE6OutputELb1EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE6EE6OutputELb1EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_7ReducerILNS_13PrimitiveTypeE7EE6OutputELb1EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE15get_return_typeEv Unexecuted instantiation: _ZNK5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE15get_return_typeEv |
380 | | |
381 | 0 | IAggregateFunction* transmit_to_stable() override { |
382 | 0 | return new AggregateFunctionDistinct<Data, true>(nested_func, |
383 | 0 | IAggregateFunction::argument_types); |
384 | 0 | } 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 Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb0EE18transmit_to_stableEv Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_42AggregateFunctionDistinctSingleGenericDataELb1EE18transmit_to_stableEv Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb0EE18transmit_to_stableEv Unexecuted instantiation: _ZN5doris25AggregateFunctionDistinctINS_44AggregateFunctionDistinctMultipleGenericDataELb1EE18transmit_to_stableEv |
385 | | }; |
386 | | |
387 | | template <typename T> |
388 | | struct FunctionStableTransfer { |
389 | | using FunctionStable = T; |
390 | | }; |
391 | | |
392 | | template <template <bool stable> typename Data> |
393 | | struct FunctionStableTransfer<AggregateFunctionDistinct<Data, false>> { |
394 | | using FunctionStable = AggregateFunctionDistinct<Data, true>; |
395 | | }; |
396 | | |
397 | | } // namespace doris |